2013-03-28 66 views
2

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

我用

$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,并添加随机小时,分钟(也许秒)

+1

请注意,'24:00'无效时间。时间从'00:00:00'到'23:59:59'。 – rid

+0

对..将其添加到问题列表:-)谢谢, –

+0

咦?插入DATETIME字段时,您不需要指定TIME。即使是这样,为什么还要漫长的随机化,当你可以插入00:00:00? –

回答

6
$dt = DateTime::createFromFormat('n/d/Y', '7/03/2013'); 
echo $dt->format('Y-m-d H:i:s'); 

See it in action

的时间将取决于当你运行该代码。

+0

这会给我总是00:00:00。这是一个原始问题,如何添加随机HH和MM? –

+0

查看更新的答案 –

+0

请记住,这只适用于较新的PHP安装(在php 5.2之后) – bestprogrammerintheworld

4

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

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

00:00:00默认从我第一次尝试创建。但为了区分数据库,我需要在同一日期创建的条目的不同时间.. –

+0

@ObmerkKronen,或者,您可以添加一个单独的字段,您增加每个记录,应该区分它们,即使它们具有相同的时间。使用随机值并不能保证独特的结果。 – rid

+0

嗯,实际上它是为Wordpress插入,所以我需要时间来有不同的后序,但从来没有 - 解决方案的工程很好应用像'日期('YMD'。sprintf('%02d:%02d:00',mt_rand(0 ,23),mt_rand(0,59)),strtotime($ date));' –

1

这将产生对HH一个随机数:二:SS

$date = '7/03/2013'; 

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