JavaScript UTCから現地時間への変換はIEとFirefoxでは機能しませんが、Chromeでは正常に機能します

pep8

私は問題に直面しています。

Javaコードを使用してサーバーのUTC時間を節約しています。

DateFormat timeFormat = new SimpleDateFormat("dd-MMMM-yy HH:mm:ss");

私はこれで時間を持続します->

time = timeFormat.format(new Date()).toString()

これはUTC時間として保持されます。

今、それをブラウザに表示しながら、私はそれを現地時間に変換します:

var date = new Date(time);

convertToLocal(date).toLocaleString();

function convertToLocal(date) {
    var newDate = new Date(date.getTime() +date.getTimezoneOffset()*60*1000);

    var offset = date.getTimezoneOffset() / 60;
    var hours = date.getHours();

    newDate.setHours(hours - offset);

    return newDate;
}

console.log("Time : " + convertToLocal(date).toLocaleString())

これはChromeでは正常に機能しますが、FirefoxとIEでは、期待するタイムスタンプの代わりに「無効な日付」が表示されます。

助けてください。

トリンコット

問題は、JavaコードがISO8601形式に準拠していない日付/時刻文字列を生成することですJavaScriptエンジンがそれをどのように処理する必要があるかは定義されていません(したがって、ブラウザーごとに異なります)。

日付、時、分を含むISO8601形式で現在の時刻を取得する方法を参照してくださいJavaコードを変更して、ISO形式を使用する日付を生成する方法について説明します。目的の形式(ISO)をに渡して、SimpleDateFormatUTCを意味するように構成できます。

DateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
timeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

その出力は2018-11-26T19:41:48Zのようになります(これのいくつかのバリエーションが受け入れられます)。「T」と終了「Z」(UTCの場合)に注意してください。

これが完了すると、JavaScriptは日付/時刻をUTCタイムゾーンで指定されているものとして正しく解釈します。その後、タイムゾーンの違いを明示的に追加する必要なしに、JavaScriptで次のことを行うだけで済みます。

console.log("Time : " + date.toLocaleString())

文字列化でローカルタイムゾーンを考慮に入れるJavaScript。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ