PHP:将日期字符串转换为Unix时间戳

时间:2011-06-28 02:44:55

标签: php

给出以下字符串:

  • 11年1月1日
  • 1/1/11
  • 1/1/2011
  • 2011年1月1日
  • 2011年1月1日

如何将这些转换为Unix时间戳。请注意,在大多数情况下,这将采用dd mm yyyy格式,并带有各种分隔符。

3 个答案:

答案 0 :(得分:33)

查看strtotimestrptimeDateTime类。

strtotime示例:

$timestamp = strtotime('1/1/2011');

每个功能都有它的警告。例如,strtotime的文档声明:

  

日期为m / d / y或d-m-y格式   通过观察来消除歧义   各种之间的分隔符   组件:如果分隔符是   斜线(/),然后是美国的m / d / y   假定;而如果分隔符是a   破折号( - )或点(。),然后是   假设欧洲d-m-y格式。

您还可以使用preg_match捕获所有3个部分,并使用mktime创建自己的时间戳。

preg_match示例:

if ( preg_match('/^(?P<day>\d+)[-\/](?P<month>\d+)[-\/](?P<year>\d+)$/', '1/1/2011', $matches) )
{
  $timestamp = mktime(0, 0, 0, ( $matches['month'] - 1 ), $matches['day'], $matches['year']);
}

答案 1 :(得分:3)

$to='23.1.2014-18:16:35'
list($part1,$part2) = explode('-', $to);
list($day, $month, $year) = explode('.', $part1);
list($hours, $minutes,$seconds) = explode(':', $part2);
$timeto =  mktime($hours, $minutes, $seconds, $month, $day, $year);
echo $timeto;

答案 2 :(得分:2)

您可能正在寻找strtotime function

然而,作为一种警告,它会将每个可能的字符串格式转换为unix时间戳(epoch),因为很难明确地将每个字符串解析为日期时间。