考虑以下字符串:PHP:转换日期字符串到Unix时间戳
- 11年1月1日
- 1/1/11
- 2011/1/1
- 1月1日/ 2011
- 2011年1月1日
- 等
如何转换ŧ这是一个Unix时间戳。请注意,在大多数情况下,这将采用带有各种分隔符的dd mm yyyy
格式。
考虑以下字符串:PHP:转换日期字符串到Unix时间戳
如何转换ŧ这是一个Unix时间戳。请注意,在大多数情况下,这将采用带有各种分隔符的dd mm yyyy
格式。
看strtotime
,strptime
或DateTime
类。
strtotime
实施例:
$timestamp = strtotime('1/1/2011');
每个功能都有它的警告。例如,对于strtotime
指出的文档:在第m
日期/ d/y或DMY格式 是通过查看各种 部件之间的 隔板消除歧义:如果分离器是 斜线( /),则假设美国的m/d/y为 ;而如果分隔符是 短划线( - )或点(。),则假定欧洲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']);
}
你可能寻找strtotime function。
但是,作为一个警告,它会将每一个可能的字符串格式转换为unix时间戳(epoch),因为很难明确地将每个字符串解析为日期时间。
$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;
您的正则表达式采用dd-mm-yyyy格式,我不确定它的格式。 – StackOverflowNewbie
@StackOverflowNewbie - 您的问题说:“请注意,在大多数情况下,这将采用带有各种分隔符的dd mm yyyy格式。”所以我采用了这种格式,但是你可以添加'elseif'语句来检查不同的格式,并使'regex'更加具体(即,而不是\ d +)使用描述0-12的月份和0 -31天)。当然,在1/2/13的情况下,除非你知道格式,否则不可能知道哪个是哪个。 –