2011-06-28 114 views

回答

25

strtotime,strptimeDateTime类。

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']); 
} 
+0

您的正则表达式采用dd-mm-yyyy格式,我不确定它的格式。 – StackOverflowNewbie

+0

@StackOverflowNewbie - 您的问题说:“请注意,在大多数情况下,这将采用带有各种分隔符的dd mm yyyy格式。”所以我采用了这种格式,但是你可以添加'elseif'语句来检查不同的格式,并使'regex'更加具体(即,而不是\ d +)使用描述0-12的月份和0 -31天)。当然,在1/2/13的情况下,除非你知道格式,否则不可能知道哪个是哪个。 –

0

你可能寻找strtotime function

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

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;