繁体   English   中英

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未被视为一年; 相反, 01-12-1328-11-13被PHP解释为2001年12月13日和2028年11月13日。 请参阅PHP的日期格式页面 ,在“ISO8601 Notations”下:“两位数的年,月,日用短划线”。

如果您改用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"; 

通过这种方式,函数知道哪一年是年份,它采用默认的foramt(如果不是误)Ydm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM