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 翻转的主要内容,如果未能解决你的问题,请参考以下文章