【问题标题】:PHP transforming time formats and adding random time varsPHP 转换时间格式并添加随机时间变量
【发布时间】:2013-03-19 00:04:37
【问题描述】:

我需要从看起来像 7/03/2013(是的,可以是 7 或 07)的字符串生成格式时间:[ Y-m-d H:i:s ]

我用

$date = '7/03/2013';
$date = date('Y-m-d H:i:s', strtotime($date));

这很好用。 那么问题出在哪里?

问题是我没有H:i:s 部分,但我需要它才能插入数据库。

所以我只是尝试随机它:

$rand = rand(00,24); 
$datenew = date('Y-m-d '.$rand.':i:s', strtotime($date));

但这会产生像46 这样的时间,我需要0406 所以:

$rand = rand(0,2) . rand(1,4) ;
$datenew = date('Y-m-d '.$rand.':'.$rand.':s', strtotime($date));

但在我看来,这显然不够优雅。

我还需要会议记录,所以我需要以某种方式格式化rand(00,60)

但结合起来也会创造像24:26:00这样不切实际的时代

那么我怎样才能花时间使用格式 7/03/2013 ,转换为 H:i:s 并添加随机小时、分钟(可能还有秒)

【问题讨论】:

  • 请注意24:00 不是有效时间。时间从00:00:00 变为23:59:59
  • 对 .. 将其添加到问题列表中 :-) 谢谢,
  • 嗯?插入 DATETIME 字段时无需指定时间。即使是这样,当您可以插入 00:00:00 时,为什么还要走很长的路来随机化它?

标签: php random time formatting


【解决方案1】:
$dt = DateTime::createFromFormat('n/d/Y', '7/03/2013');
echo $dt->format('Y-m-d H:i:s');

See it in action

时间会因您运行代码的时间而异。

【讨论】:

  • 这将永远给我 00:00:00 。这是一个原始问题,如何添加随机 HH 和 MM ?
  • 请记住,这只适用于较新的 PHP 安装(php 5.2 之后)
【解决方案2】:

您可以改用Y-m-d 00:00:00。或者,如果你需要它是随机的,你可以使用类似的东西:

date('Y-m-d ' . sprintf('%02d:%02d:00', mt_rand(0, 23), mt_rand(0, 59)));

【讨论】:

  • 00:00:00 是我第一次尝试时默认创建的。但为了区分数据库,我需要在同一日期创建的条目有不同的时间..
  • @ObmerkKronen,或者,您可以为每条记录添加一个单独的字段,以区分它们,即使它们具有相同的时间。使用随机值并不能保证唯一的结果。
  • 嗯,实际上它是用于 Wordpress 插入,所以我需要时间有不同的发布顺序,但没关系 - 解决方案效果很好,如 date('Y-m-d ' . sprintf('%02d:%02d:00', mt_rand(0, 23), mt_rand(0, 59)), strtotime($date));
  • @ObmerkKronen,实际上我认为John Conde's answer 是一个更好的主意,因为时间将是连续的而不是随机的(如果顺序适合你的话),所以你发生冲突的机会更少。
  • @ObmerkKronen,好吧,您可以使用他的解决方案,但使用较旧的功能。例如,您可以使用:date('Y-m-d', $yourDate) . ' ' . date('H:i:s').
【解决方案3】:

这将为 HH:ii:ss 生成一个随机数

$date = '7/03/2013';

$new_date  = date('Y-m-d', strtotime($date));
$new_date .= date(' H:i:s', mt_rand(0,1262055681));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多