php将日期转换为时间戳

php将日期转换为时间戳,php,string,date,time,timestamp,Php,String,Date,Time,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 > $st

我正在尝试将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";
$today=date(“d-m-y”);//01-12-13
$start_date=“28-11-13”;
$todaytimestamp=strottime($today);
$starttimestamp=strottime($start\u date);
回显“$today>$start\u date
$today时间戳>$starttimestamp”;
问题是结果不正确

结果:

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


怎么了?

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

$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";

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

始终使用四位数年份,因为使用两位数年份会带来无尽的麻烦<代码>13不被视为一年;相反,
01-12-13
28-11-13
被PHP解释为2001年12月13日和2028年11月13日。请参见“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";

该函数假定您从一年开始 (勾选:),更改为

 $start_date = "28-11-2013"; 
通过这种方式,函数知道哪一年是哪一年,它采用默认的foramt(如果没有误取)Y-d-m

 $start_date = "28-11-2013";