【问题标题】:Convert date in one timezone to another timezone using timezone abbreviations使用时区缩写将一个时区中的日期转换为另一个时区
【发布时间】:2013-06-13 10:58:19
【问题描述】:

我正在开发一个网络应用程序,用户可以在该应用程序中设置他/她的时区,该时区在应用程序中进一步用于各种日期时间转换。所选时区可以与用户的区域设置时区不同。

我目前遇到一个问题,我需要将用户选择的日期(用户假定该日期位于他/她在应用程序中选择的时区)与当前日期进行比较,以查看所选日期是否为日期在未来。参考我搜索过的所有地方,我发现我可以在用户区域设置或 UTC 时间中获取当前日期。

所以我的问题的要点是 - 有没有办法使用时区缩写将日期从一个时区转换为另一个时区?

我在这里发帖之前已经搜索了很多,但找不到任何解决方案。我在搜索过程中发现的大多数地方都表明没有这样的解决方案。

我尝试过使用 date.js,但它并不足以达到目的,因为它已经过时了,而且它支持的时区缩写也非常有限。我还查看了 timezoneJS,但我认为它不适用于时区缩写。

有没有什么方法可以使用javascript或者jquery来完成?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    给你:

    // calculate local time in a different city given the city's UTC offset
    function calcTime(city, offset) {
    
        // create Date object for current location
        var date = new Date();
    
        // convert to msec
        // add local time zone offset 
        // get UTC time in msec
        var utc = date.getTime() + (date.getTimezoneOffset() * 60000);
    
        // create new Date object for different city
        // using supplied offset
        var newDate = new Date(utc + (3600000 * offset));
    
        // return time as a string
        return "The local time in " + city + " is " + newDate.toLocaleString();
    }
    
    // get Bombay time
    console.log(calcTime('Bombay', '+5.5'));
    
    // get Singapore time
    console.log(calcTime('Singapore', '+8'));
    
    // get London time
    console.log(calcTime('London', '+1'));
    

    【讨论】:

    • 感谢您的回答...它适用于夏令时未启用的所有时区。请告诉我,如何让它在夏令时的时区工作?
    • 是的。它不是内置的 Jscript 功能。它是经过计算的转换。
    • 如果您使用的是 timezone-js,那么代码如下: var dt = new timezoneJS.Date("2012/04/10 10:10:30 +0000", 'Europe/London') ; dt.setTimezone("亚洲/雅加达");控制台.调试(dt); //返回亚洲/雅加达的格式化日期时间
    • 是的,我知道它是经过计算的转换,但有没有办法确定当前时间应该开启夏令时?不,我没有使用 timezoneJS,它不适合我的需求。
    猜你喜欢
    • 2015-02-21
    • 1970-01-01
    • 2019-06-19
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 2012-10-27
    相关资源
    最近更新 更多