web-dev-qa-db-ja.com

C#DateTimeからUTC時間への時間変更なし

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

例:

DateTime dateTime = GetSomeDateTime(); // dateTime here is 3pm
dateTime.ToUtcDateTime() // datetime should still be 3pm
107
Luke Belbina
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);
182
tofutim

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
43
user166390

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

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