给定以下字符串:
- 01/01/11
- 1/1/11
- 1/1/2011
- 01/1/2011
- 1-1-2011
- 等等
如何将它们转换为Unix时间戳。请注意,在大多数情况下,这将是以各种分隔符的dd mm yyyy
格式。
给定以下字符串:
如何将它们转换为Unix时间戳。请注意,在大多数情况下,这将是以各种分隔符的dd mm yyyy
格式。
参考strtotime
、strptime
或者 DateTime
类。
strtotime
示例:
$timestamp = strtotime('1/1/2011');
每个函数都有自己的注意点。例如,strtotime
的文档声明如下: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']);
}
$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;
elseif
语句来检查不同的格式,并使regex
更具体(例如,不使用\d+,而是使用描述月份0-12和日期0-31的模式)。当然,在1/2/13这种情况下,除非你知道格式,否则无法确定哪个是哪个。 - Francois Deschenes