C#DateTimeOffset LocalDateTime与ToLocalTime
有人能解释一下C#DateTimeOffset中ToLocalTime()方法和LocalDateTime属性之间的区别吗?文档说明如下: : 获取表示当前DateTimeOffset对象的本地日期和时间的值 : 将当前DateTimeOffset对象转换为表示本地时间的DateTimeOffset对象 查看,我们可以看到C#DateTimeOffset LocalDateTime与ToLocalTime,c#,datetimeoffset,C#,Datetimeoffset,有人能解释一下C#DateTimeOffset中ToLocalTime()方法和LocalDateTime属性之间的区别吗?文档说明如下: : 获取表示当前DateTimeOffset对象的本地日期和时间的值 : 将当前DateTimeOffset对象转换为表示本地时间的DateTimeOffset对象 查看,我们可以看到LocalDateTime属性获取表示为UTCDateTime对象的值,然后使用DateTime对象的ToLocalTime()方法对其进行转换 public DateTime
LocalDateTime
属性获取表示为UTCDateTime
对象的值,然后使用DateTime
对象的ToLocalTime()
方法对其进行转换
public DateTime UtcDateTime {
[Pure]
get {
Contract.Ensures(Contract.Result<DateTime>().Kind == DateTimeKind.Utc);
return DateTime.SpecifyKind(m_dateTime, DateTimeKind.Utc);
}
}
public DateTime LocalDateTime {
[Pure]
get {
Contract.Ensures(Contract.Result<DateTime>().Kind == DateTimeKind.Local);
return UtcDateTime.ToLocalTime();
}
}
您可以使用以下代码测试结果:
DateTimeOffset dto = new DateTimeOffset(2020, 10, 01, 9, 0, 0, 0, TimeSpan.FromHours(9));
Console.WriteLine(dto.ToString(System.Globalization.CultureInfo.InvariantCulture)); // 10/01/2020 09:00:00 +09:00
DateTime localTimeDt = dto.LocalDateTime;
Console.WriteLine(localTimeDt.ToString(System.Globalization.CultureInfo.InvariantCulture)); // 10/01/2020 02:00:00
DateTimeOffset localTimeDto = dto.ToLocalTime();
Console.WriteLine(localTimeDto.ToString(System.Globalization.CultureInfo.InvariantCulture)); // 10/01/2020 02:00:00 +02:00
当然,DateTimeOffset
保留Rextester系统时间的+2:00,因为这是它基于的时区
DateTimeOffset dto = new DateTimeOffset(2020, 10, 01, 9, 0, 0, 0, TimeSpan.FromHours(9));
Console.WriteLine(dto.ToString(System.Globalization.CultureInfo.InvariantCulture)); // 10/01/2020 09:00:00 +09:00
DateTime localTimeDt = dto.LocalDateTime;
Console.WriteLine(localTimeDt.ToString(System.Globalization.CultureInfo.InvariantCulture)); // 10/01/2020 02:00:00
DateTimeOffset localTimeDto = dto.ToLocalTime();
Console.WriteLine(localTimeDto.ToString(System.Globalization.CultureInfo.InvariantCulture)); // 10/01/2020 02:00:00 +02:00