将UTC时间转换为特定区域

时间:2013-07-11 16:09:54

标签: javascript html

我有以下数据:

var currentTime:2013-07-11 15:55:36 + 00:00 var currentTimezone:Africa / Asmera

我需要一种方法将UTC中的currentTime转换为基于currentTimezone的新时间。

我调查了Timezone.js而我在实施它时遇到了麻烦(网站上的说明有些含糊不清)

包含我打算使用的函数的代码。谢谢:))

    <script>

    $("#storeTime").click(function(){
        storeCurrentTime();
    })

    $("#getTime").click(function(){
        retrieveTime();
    })

    $("#storeTimezone").click(function(){
        var yourTimezone = $('#timezone-select').find(":selected").text();
        tz = yourTimezone.toString();
        storeCurrentTimezone(tz);
    })

    $("#convertTime").click(function(){
        //get the most recent UTC time, clean it up
        var currentTime = $('#RetrievedTime').html();
        currentTime = currentTime.split(": ")[1];
        $('#convertedTime').html("Converted Time: " + currentTime);     

        //get the saved timezone
        var currentTimezone = $('#storedTimezone').html();

    })
</script>

1 个答案:

答案 0 :(得分:0)

你需要知道时区偏移,所以某种字典带有数字字符串。

// assuming your dictionary says 3 hours is the difference just for example.
var timezoneDiff = 3;

然后你可以像这样创造新的时间

// Assuming you have the proper Date string format in your date field.
var currentDate = new Date(currentTime);
// Then just simply make a new date.
var newDate = new Date(currentDate.getTime() + 60 * 1000 * timezoneDiff);

<强>更新

我为此编写了一个javascript助手,您可以在以下位置找到: http://heuuuuth.com/projects/OlsonTZConverter.js

我从维基百科页面https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

中提取了时区数据

一旦包含脚本,用法如下。

var offset = OlsonTZConverter.GetUTCOffset("Africa/Asmera");

或者如果有夏令时有效:

var offset = OlsonTZConverter.GetUTCOffset("Africa/Asmera",true);

如果您传递了无效的时区,则会抛出这些时区,但您可以检查时区是否有效:

var isValid = OlsonTZConverter.Contains("Africa/Asmera");

或者只看一下整个字典:

var tzDict = OlsonTZConverter.ListAllTimezones();

希望这可能会在某个时候节省一些时间:)。