当前位置: 首页 > 知识库问答 >
问题:

如何将JavaScript日期初始化到特定时区

高山
2023-03-14
var mydate = new Date();
mydate.setFullYear(2013);
mydate.setMonth(02);
mydate.setDate(28);
mydate.setHours(7);
mydate.setMinutes(00);  

我尝试使用从UTC中添加/减去偏移量,但我不知道如何反制夏令时。我不确定我的方向是否正确。

如何在JavaScript中将时间从不同的时区转换为本地时间?

共有1个答案

商天逸
2023-03-14

JavaScript的date对象在内部跟踪UTC时间,但通常在运行它的计算机的本地时间内接受输入并产生输出。它很少有在其他时区处理时间的设施。

date对象的内部表示形式为单个数字,表示自1970-01-01 00:00:00 UTC以来经过的毫秒数,而不考虑闰秒。Date对象本身中没有存储时区或字符串格式。当使用date对象的各种函数时,计算机的本地时区将应用于内部表示。如果函数产生一个字符串,则可以考虑计算机的区域设置信息,以确定如何产生该字符串。每个函数的细节都不同,有些是特定于实现的。

date对象可以对非本地时区执行的唯一操作是:

var d = new Date("2020-04-13T00:00:00.000+08:00");
d.toISOString()  //=> "2020-04-12T16:00:00.000Z"
d.valueOf()      //=> 1586707200000  (this is what is actually stored in the object)
var d = new Date("2020-04-13T00:00:00.000+08:00");
d.toLocaleString('en-US', { timeZone: 'America/New_York' })
//=> "4/12/2020, 12:00:00 PM"
// (midnight in China on Apring 13th is noon in New York on April 12th)

有几个库可用于处理时区。虽然它们仍然不能使date对象的行为有任何不同,但它们通常实现标准的IANA时区数据库,并提供在JavaScript中使用它的函数。现代库使用Intl API提供的时区数据,但较旧的库通常具有开销,特别是在web浏览器中运行时,因为数据库可能会变得有点大。其中一些库还允许您有选择地减少数据集,可以根据支持的时区和/或可以使用的日期范围减少数据集。

以下是需要考虑的库:

基于Intl的库

  • 卢克森(Moment.js的继任者)
  • date-fns-tz(date-fns的扩展名)

非Intl库

这些库是维护的,但承担着打包自己的时区数据的负担,这些时区数据可能相当大。

    null

中断的库

这些图书馆已正式停止使用,不应再使用。

  • WallTime-JS
  • 时区JS
 类似资料:
  • 问题内容: 在JavaScript中,如何格式化日期对象以打印为? 问题答案: 对于自定义分隔的日期格式,你必须从DateTimeFormat对象(属于ECMAScript Internationalization API的一部分)中提取日期(或时间)组件,然后手动使用所需的分隔符创建字符串。 为此,你可以使用DateTimeFormat#formatToParts: 你还可以使用来一对一地提取各

  • 问题内容: 我正在使用Moment.js解析和格式化Web应用程序中的日期。作为JSON对象的一部分,我的后端服务器以UTC纪元(Unix偏移)为单位发送日期(以毫秒为单位)。 在特定时区中 解析日期很容易-只需在解析前将RFC 822时区标识符附加到字符串的末尾即可: 但是,如何格式化 特定时区中 的日期? 无论浏览器的当前时间如何,我都希望获得一致的结果,但是我不想以UTC显示日期。 问题答案

  • 问题内容: 在将java.util.Date变量初始化为空时,我需要您的帮助。当我运行页面时,如果我没有选择任何日期,它将显示nullpointerexception。 代码是: 我试图使该变量为空,但是它不起作用> 但是,使用初始化: 上面的代码会给我一个我不想要的默认值。 问题答案: java.util.Date的 实例存储一个日期。那么,如何在其中什么也不存储呢?它只能存储对实例的引用。如果

  • 下面是我的问题的一个简单例子, 例如,用户选择了一个时区“America/New_York”,因此日历页面中的所有日期都将显示在该时区中。 现在,如果我们在“05:00 pm”创建一个事件,那么我们如何在“America/New_York”时区中创建时间为5pm的日期, 谢谢

  • 本文向大家介绍js日期范围初始化得到前一个月日期的方法,包括了js日期范围初始化得到前一个月日期的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js日期范围初始化得到前一个月日期的方法。分享给大家供大家参考。具体分析如下: 今天做时间范围的初始化设定,开始时间是当前时间的前一个月,终于找到完美的解决方案了。 希望本文所述对大家的javascript程序设计有所帮助。

  • 我有一个非常基本的问题。我需要如何为ArrayList键入parrameters才能在BlueJ中使用代码?我有一个方法如下。