javascript - 使用 javascript 转换本地时区的日期

标签 javascript timezone date-format

在我的 JavaScript 层中,我收到 UTC 格式的时间戳 - 我需要将其转换为本地时区 。我知道可以在 Java 端使用 DateFormat 转换时区,但我正在寻找一种仅使用 JavaScript 进行转换的可靠方法。

如有任何建议,我们将不胜感激。

最佳答案

使用getTimezoneOffset()

  1. 获取本地UTC偏移量并转换为毫秒

    localOffset = d.getTimezoneOffset() * 60000;
    

    请注意,getTimezoneOffset() 返回负值表示当前位置早于 UTC,而正值表示当前位置晚于 UTC。

  2. 通过将本地时区偏移量添加到本地时间来获取当前 UTC 时间。 (您将从 getTime() 获得本地时间)

    // obtain UTC time in msec
    utc = localTime + localOffset;
    
  3. 获取 UTC 时间后,获取目的地城市的 UTC 偏移量(以小时为单位),将其转换为毫秒并将其添加到 UTC 时间。

    // obtain and add destination's UTC time offset
    // for example, Mumbai(India) 
    // which is UTC + 5.5 hours
    offset = 5.5;   
    mumbai = utc + (3600000*offset);
    

    此时,变量 mumbai 包含印度孟买市的本地时间。该本地时间表示为自 1970 年 1 月 1 日以来的毫秒数。显然,这不太可读,因此我们需要进行更多计算。

  4. 通过用它初始化一个新的 Date() 对象并调用该对象的 toLocaleString() 方法,将上一步中计算的时间值更改为人类可读的日期/时间字符串。

    // convert msec value to date string
    nd = new Date(mumbai); 
    document.writeln("Mumbai time is " + nd.toLocaleString() + "<br>");
    

你就完成了!

关于javascript - 使用 javascript 转换本地时区的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14040556/

相关文章:

php - 裁剪、调整大小、缩略图、转换图像的开源脚本

javascript - 只有第一个复选框值被添加到我的表中

hibernate - 使用本地时区存储的日期 - Hibernate JPA

asp.net - 我可以将 ASP.Net MVC 2 应用程序本地化为英语但更改日期格式吗?

android - Android 中的解析异常

c# - 为什么相同文化在不同计算机或操作系统上的日期格式不同?

javascript - 内联 Javascript 可以工作,但不能在外部工作

javascript - 如何在渲染函数中返回多个组件?

java - 将 mySQL localTime 更改为当前时间

javascript - BST 日期字符串到 javascript 日期