【问题标题】:Javascript find time difference in hours with timezoneJavascript以小时为单位查找时区的时差
【发布时间】:2021-08-28 07:02:27
【问题描述】:

我有一个带有以下详细信息的 javascript 对象:

var dateobj = {
  date: "2020-12-21 03:31:06.000000",
  timezone: "Africa/Abidjan",
  timezone_type: 3
}

var date = new Date();
var options = {
  timeZone: dateobj.timezone
};
var curr_date = date.toLocaleString('en-US', options)
console.log(curr_date)
//I want this 
//diff = curr_date - dateobj.date

我想用同一时区的当前日期时间找出以小时为单位的时差。我知道我可以使用toLocaleString() 函数来获取特定时区的日期时间字符串,但是我怎样才能找到时差呢?上面的代码获取了该时区的当前日期时间,我如何才能找到以小时为单位的时差?

【问题讨论】:

  • 到目前为止您尝试过什么?什么不起作用?
  • 我给你做了一个sn-p。请使用您尝试过和预期输出的相关 JavaScript 对其进行编辑
  • @mplungjan 添加了代码。
  • 解析特定时区的时间戳是可能的,但自己编写代码相当复杂(例如here)。试试像Luxon 这样的库。

标签: javascript datetime time


【解决方案1】:

一般来说,在 JS 中处理日期时,我通常使用一个名为 date-fns(日期函数)的库。它只是使日期和时间更容易管理。这就是您使用date-fns 获得时差的方法。

const { differenceInHours } = require("date-fns"); 
const { zonedTimeToUtc } = require("date-fns-tz");

const timeData1 = {date: "2020-12-21 03:31:06.000000", timezone: "Africa/Abidjan", timezone_type: 3};
const timeData2 = {date: "2020-12-21 03:31:06.000000", timezone: "America/Los_Angeles", timezone_type: 3};

const t1 = zonedTimeToUtc(timeData1.date, timeData1.timezone);
const t2 = zonedTimeToUtc(timeData2.date, timeData2.timezone);

const diff = differenceInHours(t2, t1);

console.log(diff);
// => 8

运行演示:https://runkit.com/embed/jtfu0ixxthy7

【讨论】:

  • 谢谢!我使用了 moment.js 库。
猜你喜欢
  • 2010-10-18
  • 2013-06-05
  • 2017-06-20
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多