0

次のデータがあります。

var currentTime: 2013-07-11 15:55:36+00:00 var currentTimezone: アフリカ/アスメラ

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 に答える