操作unixtime

时间:2014-04-10 20:48:07

标签: math unix-timestamp

我试图找出基于秒(Unixtime)的哪一天,但是我遇到了很大困难。我那天的基础是86400秒,每天应该被86400秒整除

因此,我将一个数字(Unixtime)除以86400,捕获整数部分并乘以86400,我相信正确的结果应该是00:00:00的那一天,因为Unixtime 0相当于日期01/01 / 1970 0:00:00每个86400秒应提前一天,但是,语法错误或逻辑我未能获得预期的结果。

例如:27/11/2013 00:00:00,等于(Unixtime)1385517600。 如果我将(Unixtime)1385517600 86400划分为' ll 16036.08333333333。 如果我乘以整个部分16036乘以86400就会得到(Unixtime)1385510400。 Unixtime(Unixtime)等于1385510400 date 26/11/2013 22:00:00。

在这种情况下,我期望的是同一日期27/11/2013 00:00:00 Unixtime,因为由于最后一个日期正好是00:00:00 pm,我预计这个数字是86400的倍数

如果小时工作完美,我需要这样做才能将数据分组为分钟,小时,天或周的间隔。因此,我只会在几秒钟的范围内工作,这很简单。

60分钟 时间3600 第604800天 第604800周

测试: 在MySQL中我执行:SELECT UNIX_TIMESTAMP(' 2013-11-27 00:00:00'),' 2013-11-27 00:00:00',FLOOR((UNIX_TIMESTAMP( ' 2013-11-27 00:00:00')/ 86400))* 86400,FROM_UNIXTIME(FLOOR((UNIX_TIMESTAMP(' 2013-11-27 00:00:00') / 86400))* 86400);结果是:" 1385517600"," 2013-11-27 00:00:00"," 1385510400"," 2013-11-26 22 :00:00"

1 个答案:

答案 0 :(得分:0)

1385517600实际上是27/11/2013 02:00:00138551040027/11/2013 00:00:00。所以你的算法是正确的。在Mac OS上:

$ date -u -r 1385517600
Wed Nov 27 02:00:00 UTC 2013

$ date -u -r 1385510400
Wed Nov 27 00:00:00 UTC 2013

MySQL FROM_UNIXTIME的文档摘录:

... The value is expressed in the current time zone. ...