時刻を変更せずにC#のDateTimeからUTC時刻へ


124

実際の時間を変更せずに、既存の日時をUTC時間に変換するにはどうすればよいですか。

例:

DateTime dateTime = GetSomeDateTime(); // dateTime here is 3pm
dateTime.ToUtcDateTime() // datetime should still be 3pm

あなたはPSTにいますか?どのようにPST価値を得るのですか?
Kiquenet 2018年

回答:


207
6/1/2011 4:08:40 PM Local
6/1/2011 4:08:40 PM Utc

から

DateTime dt = DateTime.Now;            
Console.WriteLine("{0} {1}", dt, dt.Kind);
DateTime ut = DateTime.SpecifyKind(dt, DateTimeKind.Utc);
Console.WriteLine("{0} {1}", ut, ut.Kind);

50

DateTime.SpecifyKind静的メソッドを使用します。

指定されたDateTimeと同じ数のティックを持つ新しいDateTimeオブジェクトを作成しますが、指定されたDateTimeKind値によって示されるように、現地時間、協定世界時(UTC)、またはどちらにも指定されていません。

例:

DateTime dateTime = DateTime.Now;
DateTime other = DateTime.SpecifyKind(dateTime, DateTimeKind.Utc);

Console.WriteLine(dateTime + " " + dateTime.Kind); // 6/1/2011 4:14:54 PM Local
Console.WriteLine(other + " " + other.Kind);       // 6/1/2011 4:14:54 PM Utc

18

のオーバーロードされたコンストラクタを使用できますDateTime

DateTime utcDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second, DateTimeKind.Utc);

0

次のように行うこともできます。

DateTime utcDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime();

これは期待どおりに機能しない場合があります。試してください... new DateTime(dateTime.Year, dateTime.Month, dateTime.dateTimeay, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime().ToString() vs DateTime.SpecifyKind(dateTime, DateTimeKind.Utc).ToString() 異なる結果が得られることがわかります。
ホーマー

-7

DateTime.ToUniversalTimeメソッドを使用します。


3
これにより、dateTimeが午後11時(私はPSTです)に変更されます
Luke Belbina
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.