将单独的月,日和年值转换为时间戳

时间:2011-06-01 22:28:44

标签: php date time timestamp

我有月值(1-12),日值(1-31)和年值(2010,2011,2012)。我还有一个小时值和一分钟值。

如何以strtotime()的方式将其转换为时间戳?

7 个答案:

答案 0 :(得分:15)

鉴于变量$year $month $day $hour $minute,您可以这样做:

strtotime("$year-$month-$day $hour:$minute");

请谨慎使用"将变量括起来,在这种情况下不要使用'

更新(感谢@Clockwork和@Tadeck的评论):

如果有一个变量$timeofday代表时间(即上午或下午), 然后你可以用以下方法解析它:

strtotime("$year-$month-$day $hour:$minute$timeofday");

也就是说,只需将该变量附加到文本的末尾。

答案 1 :(得分:8)

为什么在您已经知道年月和日期时将字符串转换为日期。

使用setDate功能

<?php
$date = new DateTime();
$date->setDate(2001, 2, 3);
echo $date->format('Y-m-d');
?>

答案 2 :(得分:7)

strtotime是这项工作的最佳工具吗?那么mktime()呢?

$time = mktime($hour, $minute, 0, $month, $day, $year);

答案 3 :(得分:4)

documentation中所述,您可以通过多种方式将其提供给strtotime()。一些例子包括:

$your_time = strtotime('12/31/2011 9:59');
$your_time = strtotime('2011-12-31 9:59');
$your_time = strtotime('December 31, 2011 9:59');

等。它非常灵活。

您可以找到有效格式列表in the documentation,例如:(来自上述文档中的“化合物格式”列表):

  • 10/Oct/2000:13:55:36 -0700
  • 2008:08:07 18:11:31
  • 2008-08-07 18:11:31
  • 2008-07-01T22:35:17.02
  • 2008-07-01T22:35:17.03+08:00
  • 20080701T22:38:07
  • 20080701T9:38:07
  • 20080701t223807
  • 20080701T093807
  • 2008-7-1T9:3:37

(这是文档的副本)

答案 4 :(得分:1)

strtotime("YYYY-mm-DD HH:MM AM/PM")一样使用它:

echo date("d F Y h:i:s A", strtotime("2011-06-01 11:15 PM")) . "\n";

输出

01 June 2011 11:15:00 PM

答案 5 :(得分:0)

Y-m-d hh:mm将有效

echo strtotime('2011-12-14 11:44 am');

cit @Pekka:)

答案 6 :(得分:-2)

strtotime($month."-".$day."-".$year)