你好我正在使用Date()
函数我得到的时间是来自数据库的当前和时间来比较时间,但日期是不同的:
date_default_timezone_set("America/Los_Angeles"); // set time zone to LA
$date = date("m-d-Y h:i:s"); // current time
$current_time = strtotime($date); // current time in seconds
$get_time = 1357487529; //linux time from the server
$difference = $current_time - $get_time; //seconds that have pass already
$get_date = date("m-d-Y h:i:s", $get_time); // convert the linux time to current time and date
$exploded_get_date = explode(" ", $get_date); //divide the get date into 2 parts by space 0 = date 1 = time
$exploded_current_date = explode(" ", $date); //divide the current date into 2 parts by space 0 = date 1 = time
我得到的结果是:
01-Sun-2013 07:52:09 //get date
06-01-2013 07:56:25 //current date
1357487785 // current time
1357487529 // get time
256 //difference
为什么说我在获得日期有第1个月,但是在当前日期实际上是6月,也就是说它是星期日6,那个星期六是1?我该如何解决这个问题?
答案 0 :(得分:0)
m-d-Y
不是解析的有效格式。只有你们美国人认为将这些元素置于一个未按顺序排列是明智的......
无论如何,重点是,06-01-2013是什么意思?是6月1日还是1月6日?
为了保持一致性,计算机假设1月6日(d-m-Y格式)。
我强烈建议使用Y-m-d H:i:s
格式,因为它完全是big-endian,因此本身可以作为字符串排序。
编辑:应该注意,你可以使用time()
来获取当前时间戳。
答案 1 :(得分:0)
您的代码非常冗余:
$date = date("m-d-Y h:i:s"); // current time
$current_time = strtotime($date); // current time in seconds
可以用简单的
代替$current_time = time();
和
$get_date = date("m-d-Y h:i:s", $get_time); // convert the linux time to current time and date
$exploded_get_date = explode(" ", $get_date); //divide the get date into 2 parts by space 0 = date 1 = time
$exploded_current_date = explode(" ", $date);
可能只是
$exploded_date = date('m-d-y', $get_time);
$exploded_time = date('h:i:s', $get_time);
您在无用/重复和最终冗余操作上浪费了相当多的CPU周期。
从更大的角度来看,您的错误是PHP的正常且最简单的分析/解析日期/时间字符串为yyyy-mm-dd
格式。您正在构建mm-dd-yyyy
,这几乎完全是混乱的。当你提供不确定的格式时,PHP无法正确猜测。这意味着strtotime()会搞砸并给你不正确的结果。