1

Windows Azure を使用してバージニア州のデータセンターに展開した C# アプリケーションで MVC 4 を開発しました。ユーザー アクティビティをアプリケーションに記録し、ユーザー名とアクティビティが開始された時刻の両方を記録します。記録された時間は、フィジー標準時間に変換する必要があります。オンラインで見つけたものに基づいて、この機能を実現するための拡張メソッドを作成しました。

public static DateTime ToFijiTime(this DateTime datetime)
{

        datetime = DateTime.SpecifyKind(datetime, DateTimeKind.Utc);
        TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Fiji Standard Time");
        DateTime MyDateTime = TimeZoneInfo.ConvertTime(datetime, tz);
        return TimeZoneInfo.ConvertTimeToUtc(MyDateTime, tz);        
}

ただし、これは実際に展開するとうまく機能しません。私は正しい日付とほぼ正しい時間を取得します。何らかの理由で、常に "am" 時間として表示されます。たとえば、時刻が 2/04/2013 6:30:19 PM (フィジー標準時) の場合、記録される時刻は実際には 2/04/2013 6:30:19 AM (フィジー標準時) ですが、時刻は朝 like2/04/2013 1:30:19 AM が正しく保存されます。私のコードの何が問題なのか誰か教えてください。

4

1 に答える 1

1

ユーザーのタイムゾーンをサーバー側に保存し、

以下を使用します。

@TimeZoneInfo.ConvertTimeFromUtc(Model.CreatedOn, TimeZoneInfo.FindSystemTimeZoneById("E. US Standard Time"))

これも参照してください:

UTC/GMT 時間を現地時間に変換する

于 2013-04-03T04:39:26.070 に答える