给出以下字符串:
如何将这些转换为Unix时间戳。请注意,在大多数情况下,这将采用dd mm yyyy
格式,并带有各种分隔符。
答案 0 :(得分:33)
查看strtotime
,strptime
或DateTime
类。
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),因为很难明确地将每个字符串解析为日期时间。