3

ユーザーのタイムゾーンサーバー側を決定し、UTCから変換することは、その価値よりも多くの問題を証明しています。

javascript / jqueryがユーザーのタイムゾーンを決定し、オフセットをUTC日時スタンプ(2012-08-25 10:59:56.511479)に適用し、希望の形式(Aug 25 '12 -10)で出力するための信頼できる方法はありますか? :59AM)?

jqueryコードはどのように見えるでしょうか

// dom ready
$('span.localtime').each(function(e) {
    // get stamp and apply conversion
});
4

2 に答える 2

4

.getTimezoneOffset()は日付オブジェクトで使用でき、UTC からのオフセットを分単位で提供します。

var offset = (new Date()).getTimezoneOffset();

// convert myUtcDate to a date in local time
myUtcDate.setMinutes(myUtcDate.getMinutes() + (offset*-1));

したがって:

$('.span.localtime').each(function() {
   var myUtcDate = new Date($(this).html()); // assuming "2012-08-25 10:59:56.511479"
   myUtcDate.setMinutes(myUtcDate.getMinutes() + (myUtcDate.getTimezoneOffset() * -1));

   $(this).html(myUtcDate.toString());
});

myUtcDate.toString()必要な日付形式に置き換えることができることに注意してください。あなたの場合、それは次のようになります

$(this).html(formatDate(myUtcDate));

function formatDate(d) {

   var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];

    var y = d.getFullYear().toString().slice(-2); // "12"
    var m = months[d.getMonth()]; // "Aug"
    var d = d.getDate(); // "25"

    var ampm = 'AM';
    var h = d.getHours();

    if(h>=12) {
        h -= 12;
        ampm = 'PM';
    }

    if(h == 0)
       h = 12;

    var min = ("00" + d.getMinutes()).slice(-2);

    return m + " " + d + " '" + y + " - " + h + ":" + min + ampm;
}

より信頼性の高い方法で日付をフォーマットするために、日付フォーマット プラグインを使用することをお勧めします。

于 2012-08-28T14:06:32.110 に答える
0

また、https://github.com/GregDThomas/jquery-localtimeもご覧ください。これらすべてが、使いやすい jQuery プラグインにまとめられています。

于 2013-02-12T09:55:10.940 に答える