Javascript 日增量(以秒为单位)在下午 5:00 翻转

Posted

技术标签:

【中文标题】Javascript 日增量(以秒为单位)在下午 5:00 翻转【英文标题】:Javascript Day Increment in Seconds rolls over at 5:00PM 【发布时间】:2012-10-15 06:56:55 【问题描述】:

我正试图以纪元的方式记录我的程序诞生以来的日子。所以,我给我的程序:

epochProgram = 15622 // 这个程序诞生的纪元天数。

然后我得到当前时间并除以 1000 得到秒。然后我将其除以每天的秒数,即 86400,将其转换为自纪元以来的今天天数。然后我从今天的纪元数中减去程序纪元的生日数,以查看自程序诞生以来已经过去了多少天。

dateObj = new Date();   
 var biz = parseInt(dateObj.getTime()/1000));
  biz = biz/86400-epochProgram;

假设几天过去了,biz=6.30。我的问题是这样的: 上午 12:00 是 6.30,下午 5:00 biz=7.0,晚上 11:00,biz=7.2。

为什么十分之一 .# 数字起作用,因为 .3 是说的开始,而 .2 是一天的结束?我可以做些什么来解决这个问题,以便我可以有一个正确的天增量?

PS:这是当地太平洋时间。

【问题讨论】:

在我看来您的程序运行正常。也许您可以详细说明您的问题? 【参考方案1】:

减去时区偏移量:

var biz = (dateObj.getTime() - dateObj.getTimezoneOffset() * 6e4) / 1000 >>> 0;

【讨论】:

我认为有些人的大脑会比6e4 更好地处理60000,而零填充右移的意义何在? @FabrícioMatté 6e4>>> 写起来更短。 >>> 也为您节省了缓慢的函数调用。 谢谢!你能解释一下>>>为你节省了一个缓慢的功能吗? @dhee parseInt 将浮点精度的数字转换为整数,但它的功能更多。最后,它通常比Math.floor 或一些按位运算(也更短的类型)慢 10-15 倍。我不知道你的 sn-p 是否必须很快:但如果不需要,你仍然可以使用其他更清晰的方法来执行相同的任务。

以上是关于Javascript 日增量(以秒为单位)在下午 5:00 翻转的主要内容,如果未能解决你的问题,请参考以下文章

每个周期索引一个数组(以秒为单位)

将以秒为单位的时间间隔转换为更易读的形式

SQL Datediff 以秒为单位,带小数位

使用 JOOQ 在 PostgreSQL 中以秒为单位查找和求和时间戳之间的差异

Spark SQL datediff 以秒为单位

以秒为单位获取 UTC 时间