js怎么获取当前当天的时间戳?
例如: 现在是 2023/9/25 16:36:30
需要根据当天的时间获取 2023/9/25 00:00:00
的时间戳数字(时分秒需要全部归零)
js怎么获取当前当天的时间戳?
例如: 现在是 2023/9/25 16:36:30
需要根据当天的时间获取 2023/9/25 00:00:00
的时间戳数字(时分秒需要全部归零)
可以使用 setHours
方法设置 Date
时间为 00:00:00
,然后在获取相应的时间戳。
const timestamp = new Date(new Date().setHours(0,0,0,0)).getTime()
经评论区提醒,可以简化为:
const timestamp = new Date().setHours(0,0,0,0)
希望这个回答对你有所帮助!
基本方法如上,关键就是 setHours()
。但问题是,如果你想得到一个时间戳,用这种方法算出来的时间戳并不是 UTC 时间,比如我们在 +8 区,那算出来会是标准时间的 8 小时前。
看这个例子(浏览器 +8 区,即中国时区):
new Date("2023-9-25").getTime()
// 1695571200000
new Date("2023-9-25 Z").getTime()
// 1695600000000
这两个数据相减得到 28800000
,除以 3600
(秒/时) 再除以 1000
(毫秒/秒),可以得到 8,即 8 小时的时差。
所以,如果你想得到按当地时间计算的,以天为单位的时间戳,用
// 今天是 2023-09-25
new Date().setHours(0, 0, 0, 0)
// 1695571200000
但如果想得到按 UTC 时间计算的以天为单位的时间戳,用
// 今天是 2023-09-25
(ms => ms - ms % (24 * 3600 * 1000))(Date.now())
// 1695600000000
补充一句:一般情况下,如果只有国内用户,仅在 +8 区,不考虑时区的话,其实用哪个时间无所谓,标准都是一致的。但是只要存在其他时区的用户就可能会出问题,毕竟浏览器都是按当地时间算,这种情况下只有用 UTC 时间才能统一标准。
function getTimeNum() {
let day = "2023/9/25 16:36:30"
let [date,time] = day.split(" ");
time = "00:00:00"
return new Date(date + " " +time).getTime()
}
27 回答13k 阅读
8 回答3.5k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
5 回答5.3k 阅读✓ 已解决
4 回答1.6k 阅读✓ 已解决
3 回答1.7k 阅读
4 回答2.3k 阅读✓ 已解决