node.js - 如何在nodejs中确定两个日期是本地时间的同一天?

标签 node.js time timezone momentjs

这里有两个日期,2015-11-10 09:00:00+08:002015-11-10 01:00:00+08:00 在中国是同一天。但它们在 UTC 中是不同的一天。

那么...我如何确定两个 UTC 日期在 node.js 中的不同时区是同一天?


对不起,我的描述含糊不清,英语不好。

我有两个字符串:start_time 和 end_time。 clint 上传另外两个字符串:timezone_str、utc_time_str。

我想确定客户端时间是在开始时间和结束时间之间。

例如

  • 开始时间:2015-11-10 00:00:00
  • 结束时间:2015-11-11 00:00:00
  • utc_time_str:2015-11-10 02:00:00Z
  • timezone_str:美国/纽约

除了client_time.isBetween(start_time, end_time) == false

感谢@Matt Johnson 的回答,moment-timezone可以解决我的问题。

client_time = moment(utc_time_str).tz(timezone_str);
start = moment.tz(start_time, timezone_str);
end = moment.tz(end, timezone_str);
client_time.isBetween(start, end) === false

最佳答案

最可靠的方法是使用 parseZonemoment.js 中发挥作用保留提供的偏移量。然后使用 isSame带有 'day' 参数的函数,该参数测试同一年、月和日。

var m1 = moment.parseZone("2015-11-10 09:00:00+08:00");
var m2 = moment.parseZone("2015-11-10 01:00:00+08:00");
if (m1.isSame(m2, 'day')) {
   // ...
}    

使用这种方法,给出的偏移量无关紧要,运行代码的计算机上的时区也无关紧要。它只是比较所提供的两个日期。

关于node.js - 如何在nodejs中确定两个日期是本地时间的同一天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33775607/

相关文章:

node.js - 限制在 Sails.js 模型中设置字段

node.js - 如何配置 VSCode 的组织导入顺序?

sqlite - SQLite 中的日期函数不选择数据库中的行

MySQL 日期和时间操作

ruby-on-rails - Rails : Hack Time. 现在别名为 Time.current

javascript - 用 promise 解决游标问题

javascript - 当我处理 HTML5 时,我是否必须在 node.js 中包含 res.writeHead?

python 时间偏移

java - 获取日出日落时间

php - 如何通过IP获取时区