如果在转换时指定的时间是Unspecified,转换后产生的DateTimeOffset的值的偏移量将会为本地时区,如下代码所示:
static void Main(string[] args)
{
DateTime dateA = new DateTime(2008, 8, 24, 23, 33, 58);
DateTime dateB = DateTime.SpecifyKind(dateA, DateTimeKind.Unspecified);
DateTimeOffset dateC = dateB;
Console.WriteLine(dateB);
Console.WriteLine(dateC);
}
输出结果如下图所示,可以看到它产生的输出是本地时区:
这一点其实从DateTimeOffset的一个参数为DateTime的构造函数中就能够看出来,它只判断DateTime是否为UTC,否则就取当前本地时区的偏移量:
public DateTimeOffset(DateTime dateTime) {
TimeSpan offset;
if (dateTime.Kind != DateTimeKind.Utc) {
// Local 和 Unspecified 都转换为Local
offset = Ti