0

我有以下数据:

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>
4

1 回答 1

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();

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

于 2013-07-11T16:28:53.077 回答