msdn では、Unspecified Kind に対して次のように定義されています。
したがって、Kind が指定されていない場合、DateTime は UTC ですが、同じページにあります (例を示します)。
class Sample
{
public static void Main()
{
DateTime saveNow = DateTime.Now;
myDt = DateTime.SpecifyKind(saveNow, DateTimeKind.Unspecified);
Display("Unspecified: .....", myDt);
}
public static string datePatt = @"M/d/yyyy hh:mm:ss tt";
public static void Display(string title, DateTime inputDt)
{
DateTime dispDt = inputDt;
string dtString;
dtString = dispDt.ToString(datePatt);
Console.WriteLine("{0} {1}, Kind = {2}", title, dtString, dispDt.Kind);
dispDt = inputDt.ToLocalTime();
dtString = dispDt.ToString(datePatt);
Console.WriteLine(" ToLocalTime: {0}, Kind = {1}", dtString, dispDt.Kind);
dispDt = inputDt.ToUniversalTime();
dtString = dispDt.ToString(datePatt);
Console.WriteLine(" ToUniversalTime: {0}, Kind = {1}", dtString, dispDt.Kind);
Console.WriteLine();
}
}
}
出力を次のように与えます。
不明: ..... 5/6/2005 02:34:42 PM、種類 = 不明
ToLocalTime: 5/6/2005 07:34:42 AM、種類 = ローカル
ToUniversalTime: 5/6/2005 09:34:42 PM、Kind = Utc
したがって、これに関する問題は、Unspecified が Utc の場合、なぜ Utc から Utc への変換で datetime オブジェクトの値が変更されるのかということです。