2013-12-08 125 views
1

我有两个输入,一个是yyyy/mm/dd格式的日期,另一个是12:15 AM的时间。现在我需要在数据库中保存一个时间戳。我得到两个输入可以说:PHP从单独的日期和时间获取时间戳

$my_date = '2013/12/22'; 
$my_time = '12:50 PM'; 

我如何获得一个时间戳保存到分贝?

谢谢

回答

1

试试这个...

$my_date = '2013/12/22'; 
$my_time = '12:50 PM'; 

$full_date = $my_date . ' ' . $my_time; 

$timestamp = strtotime($full_date); 
0

您可以使用strtotime()将它转换为UNIX时间戳。

例如为:

$my_date = strtotime('2013/12/22'); 
$my_time = strtotime('12:50 PM'); 

充分的日期+时间时间戳

$timestamp = strtotime('2013/12/22 12:50 PM'); 

更多信息:http://php.net/manual/en/function.strtotime.php

+0

但我如何在一个时间戳中获取整个日期? – Alejandro

+0

@AlejandroCasas像这样'strtotime('2013/12/22 12:50 PM');' – Mahdi

+0

@mahdi为什么你接受与我的相同的另一个答案,并在几分钟后发布并接受? – edwardmp

1

使用DateTime:createFromFormat()

<?php 

$my_date = '2013/12/22'; 
$my_time = '12:50 PM'; 

$d = sprintf('%s %s', $my_date, $my_time); 

$dt = DateTime::createFromFormat('Y/m/d h:i A', $d); 
$ts = $dt->getTimestamp(); 

var_dump($ts); 

产量:

int 1387716600 

希望这有助于:)

编辑

+1

我已经upvoted这个答案'因为我相信这是迄今为止最好和最新的答案,但似乎在我之后的人也已经低估了这一点。出于好奇想知道这是什么原因?这个答案有什么问题吗? – Mahdi

+0

谢谢@Mahdi。我也希望对downvote发表评论。有人也低估了接受的答案。显然这些答案是不正确也不准确的。在我看来,如果不提供某种理由/反馈,就会冷静下来。 –

+1

关于答案本身,我使用的日期和时间很多,我个人更喜欢使用'DateTime'类的家族('DateTimeZone','DateInterval','DatePeriod'等),因为它提供了一些很好的功能和灵活性。也就是说,'strtotime'函数也没什么问题 - 它只是实用程序和所需功能的问题。在这种情况下,我特别使用了'createFromFormat',因为格式不同(Y/m/d,与ISO8601类似,除了使用斜杠)并明确定义输入格式以尽量减少可能的错误。 –