php将日期转换为时间戳


php convert a date to a timestamp

我正在尝试将2个日期转换为时间戳。一个由php(今天的日期)生成,另一个由用户输入

$today = date("d-m-y");  // 01-12-13
$start_date = "28-11-13";
$todaytimestamp = strtotime($today);
$starttimestamp = strtotime($start_date);
echo "$today > $start_date <br>$todaytimestamp > $starttimestamp";

问题是的结果不正确

结果:

01-12-13>28-11-13 1008201600>1857686400

怎么了?

总是使用四位数的年份,因为使用两位数的年份会导致无尽的头痛。13不作为一年处理;相反,PHP将01-12-1328-11-13解释为2001年12月13日和2028年11月13日。请参阅PHP的日期格式页面,在"ISO8601符号"下:"带短划线的两位数年、月和日"。

如果使用2013,问题就会消失:

$today = date("d-m-Y");  // 01-12-2013
$start_date = "28-11-2013";
$todaytimestamp = strtotime($today);
$starttimestamp = strtotime($start_date);
echo "$today > $start_date <br>$todaytimestamp > $starttimestamp";

输出:

01-12-2013 > 28-11-2013
1385884800 > 1385625600

我对文档的理解是,您正试图将可读字符串转换为基于Unix的时间戳。当你试图转换01-12-13和28-11-13时,你会得到不想要的结果,因为strtotime函数不记得如何正确解释这些值。下面代码中的一些内容应该会帮助您。

$today = date("jS M Y");  // 1st Dec 2013
$start_date = "28th Nov 2013";
$todaytimestamp = strtotime($today);
$starttimestamp = strtotime($start_date);
echo "$today > $start_date <br>$todaytimestamp > $starttimestamp";

输出

1st Dec 2013 > 28th Nov 2013
1385877600 > 1385618400

只需调整代码以适应语言的限制,如果这些值来自表单字段,您应该能够快速轻松地将它们转换为可读日期。

函数假设您从一年开始(检查:http://www.onlineconversion.com/unix_time.htm),更改为

 $start_date = "28-11-2013"; 

通过这种方式,函数知道哪一年,它采用默认值,哪一年是(如果没有错报的话)Y-d-m