既存のdatetimeを、実際の時刻を変えずにUTC時刻に変換するにはどうしたらよいでしょうか。
例
DateTime dateTime = GetSomeDateTime(); // dateTime here is 3pm
dateTime.ToUtcDateTime() // datetime should still be 3pm
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);
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