如何在PHP中将日期YYYY-MM-DD转换为纪元时间

23
根据标题:如何在PHP中将字符串日期(YYYY-MM-DD)转换为时代(从1970-01-01开始的秒数)。

3
在提问之前,你是否尝试在Stack Overflow上搜索?有很多与这个主题相关的问题。这里是其中一个:将日期从mm/dd/yyyy格式转换为PHP epoch - j0k
更糟糕的是,所有人都在使用不必要的缩写词和发表不必要的评论:SO是什么?也许你是指SE(搜索引擎),难道不是吗? - Gianluca Ghettini
SO 意味着 StackOverflow,抱歉。SE 可能指 StackExchange 网络。Meta 意味着 meta.stackoverflow。 - j0k
4个回答

40
也许这能回答你的问题 http://www.epochconverter.com/programming/functions-php.php 这是链接的内容:
有很多选择:
1. 使用 'strtotime':
strtotime 可以将大多数英语语言日期文本解析为时代/Unix 时间。
echo strtotime("15 November 2012");
// ... or ...
echo strtotime("2012/11/15");
// ... or ...
echo strtotime("+10 days"); // 10 days from now

检查转换是否成功非常重要:

// PHP 5.1.0 or higher, earlier versions check: strtotime($string)) === -1
if ((strtotime("this is no date")) === false) {
   echo 'failed';
 }

2.使用DateTime类:

PHP 5的DateTime类更易于使用:

// object oriented
$date = new DateTime('01/15/2010'); // format: MM/DD/YYYY
echo $date->format('U'); 

// or procedural
$date = date_create('01/15/2010'); 
echo date_format($date, 'U');

'U'日期格式将日期转换为UNIX时间戳。

使用'mktime':

这个版本更麻烦,但在任何PHP版本上都可以使用。

// PHP 5.1+ 
date_default_timezone_set('UTC');  // optional 
mktime ( $hour, $minute, $second, $month, $day, $year );

// before PHP 5.1
mktime ( $hour, $minute, $second, $month, $day, $year, $is_dst );
// $is_dst : 1 = daylight savings time (DST), 0 = no DST ,  -1 (default) = auto

// example: generate epoch for Jan 1, 2000 (all PHP versions)
echo mktime(0, 0, 0, 1, 1, 2000); 

9
单独的链接被认为是一个差劲的答案(参见[faq#deletion]),因为它本身是没有意义的,且目标资源未来不能保证存在。更好的做法是在此处包含答案的关键部分,并提供该链接以供参考。请点击此处了解更多信息。 - j0k
1
抱歉 j0k,不会再发生了 :) - Nick Audenaerde

13

1
关于这个答案的有趣小细节是,它仅适用于UNIX纪元之后的日期。虽然没有多少人需要更早的时间,但它不会输出负数。 - The Thirsty Ape

4

3

使用strtotime()函数可以为您提供从1970年1月1日开始的Unix时间戳


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接