1

UTC のデータベースに日時が保存される Web アプリケーションに取り組んでいます。ここで、UI に表示する日時を取得するときに、ユーザーがアプリケーションを使用している場所から日時を特定の時間に変換する必要があります。

UTC から特定の現地時間に時刻を変換するために、私はいくつかのデモ調査を行っていました。時間を変換する2つの方法を見つけました。1 つはサーバー側からのもので、もう 1 つはクライアント側からのものです。サーバー側では ASP.NET を使用し、クライアント側では JavaScript を使用しています。しかし問題は、答えが同じではないということです。

コードをあげています。

サーバ側:

Label1.Text = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).ToString();

クライアント側:

$(document).ready(function () {
    var offset = new Date().getTimezoneOffset();
    $('#Label1').text(offset / 60);
});

サーバー側コードの場合、ラベルに 05:30:00 が表示されています。クライアント側コードの場合、ラベルに -5.5 が表示されています。

私の質問は、なぜこの 2 つの UTC オフセットが同じではないのですか??

4

2 に答える 2

1

オフセットの形式は異なります。
サーバー側のサンプルは、 のDateようなオブジェクトのようです。クライアント側のバージョンはint( 330) のようです。

ただし、これらの値は一致しているように見えます。

仕様を見ると、サーバー側のコードはTimeSpanオブジェクトを返しますが、JavaScriptは実際に整数を返します。

于 2012-12-12T11:40:31.090 に答える
0

それは単にフォーマットの問題です。オフセットが +5:30 の場合、getTimezoneOffset330 が返されます。これは、UTC を取得するために現地時間に追加する分です。

1970-01-01T00:00:00Z からのミリ秒の値として時間を渡す場合は、それを Date コンストラクターに直接渡すことができます。

var localDate = new Date(timevalue);

同等の UTC 時間値を返すには、次を使用しますgetTime

var UTCTimeValue = localDate.getTime();

Javascript の日付オブジェクトは、システムのタイムゾーン オフセットを持つ UTC 時刻値を使用して、ローカルの日付と時刻の値 ( getDategetHoursなど) を返すか、UTC メソッドが呼び出された場合は UTC 値 ( getUTCDategetUTCHoursなど) を返します。

于 2012-12-12T11:51:46.863 に答える