如果在转换时指定的时间是Unspecified转换后产生的DateTimeOffset的值的偏移量将会为本地时区如下代码所示
static void Main(string[] args)
{
DateTime dateA = new DateTime( );
DateTime dateB = DateTimeSpecifyKind(dateA DateTimeKindUnspecified);
DateTimeOffset dateC = dateB;
ConsoleWriteLine(dateB);
ConsoleWriteLine(dateC);
}
输出结果如下图所示可以看到它产生的输出是本地时区
这一点其实从DateTimeOffset的一个参数为DateTime的构造函数中就能够看出来它只判断DateTime是否为UTC否则就取当前本地时区的偏移量
public DateTimeOffset(DateTime dateTime) {
TimeSpan offset;
if (dateTimeKind != DateTimeKindUtc) {
// Local 和 Unspecified 都转换为Local
offset = TimeZoneCurrentTimeZoneGetUtcOffset(dateTime);
}
else {
offset = new TimeSpan();
}
m_offsetMinutes = ValidateOffset(offset);
m_dateTime = ValidateDate(dateTime offset);
}
转换DateTimeOffset为DateTime
在转换一个DateTimeOffset类型为DateTime类型时可以使用如下几个属性
DateTime属性返回一个指示为Unspecified的DateTime值
[] [] [] [] [] [] []