【问题标题】:Generate unique transaction id from current datetime从当前日期时间生成唯一的交易 ID
【发布时间】:2017-04-27 09:03:18
【问题描述】:

我需要在 PHP 中使用 datetime 生成一个唯一的事务 ID。数字格式应该是 17-20 个字符左右。 (点赞: 2017041914495412346
谁能帮帮忙?
提前谢谢..

【问题讨论】:

  • 你能不能像你在这里所做的那样将日期和时间组合成一个字符串,然后使用 for 循环在末尾添加一个新整数,直到长度为 20 个字符?

标签: php codeigniter datetime unique


【解决方案1】:

这样的东西对你有用:

    <?php
function getGUIDnoHash(){
            mt_srand((double)microtime()*10000);
            $charid = md5(uniqid(rand(), true));
            $c = unpack("C*",$charid);
            $c = implode("",$c);

            return substr($c,0,20);
    }


echo getGUIDnoHash();
?>

既然你说的是字符,这将只包括数字。将是 20 个字符。当然,由于它只是数字且限制为 20 个字符,因此这不是永远唯一的,因此您需要在代码中添加检查。

【讨论】:

  • 嗨西蒙斯。谢谢你的建议。对不起,我提到了性格。我需要数字格式。你能建议我用数字格式吗?再次感谢。
  • 非常感谢。就像我需要的一样。
【解决方案2】:

您可以简单地为 uniqid 使用 uniqid() 函数

【讨论】:

    【解决方案3】:

    你可以试试这个:

    substr(hash('sha256', mt_rand() . microtime()), 0, 20);
    

    【讨论】:

      【解决方案4】:

      像这样获取唯一的交易ID:

      DateTime.Now.ToString("ddMMyyyyHHmmssfff") ;
      

      【讨论】:

        【解决方案5】:

        您可以使用多种方法或日期时间逻辑来完成。以下是我正在使用的 17 位单行解决方案

        $unique = str_replace(".","",microtime(true)).rand(000,999);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-02-13
          • 1970-01-01
          • 2017-02-28
          • 1970-01-01
          • 1970-01-01
          • 2021-04-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多