C# DateTimeOffset,不清楚
我读了一篇关于DateTimeOffset、属性DateTime的文档 DateTime属性不受偏移量值的影响 财产。此属性返回日期和时间组件 DateTimeOffset对象的,这使它对执行 DateTimeOffset到DateTime的转换。例如,如果 DateTimeOffset对象的日期和时间值为“1/12/07 4:01pm+ 7:30”,物业返回的日期为“2007年12月1日下午4:01” 我有+2 GMT时区,请尝试以下代码:C# DateTimeOffset,不清楚,c#,date,datetime,datetimeoffset,C#,Date,Datetime,Datetimeoffset,我读了一篇关于DateTimeOffset、属性DateTime的文档 DateTime属性不受偏移量值的影响 财产。此属性返回日期和时间组件 DateTimeOffset对象的,这使它对执行 DateTimeOffset到DateTime的转换。例如,如果 DateTimeOffset对象的日期和时间值为“1/12/07 4:01pm+ 7:30”,物业返回的日期为“2007年12月1日下午4:01” 我有+2 GMT时区,请尝试以下代码: var dateString = "201
var dateString = "2012-03-01 00:00:00-23:00";
var birthDay = DateTime.Parse(dateString);
DateTimeOffset dtOffset = new DateTimeOffset(birthDay);
然后我查看dtOffset对象的属性DateTime,并查看{3/2/2012 1:00:00 AM}值。UtcDateTime具有{3/1/2012 11:00:00 PM}值,LocalDateTime具有{3/2/2012 1:00:00 AM}值。因此,DateTimeOffset实例的属性DateTime具有带偏移量的DateTime。我错在哪里?DateTimeOffset实际上应该称为ADateTimeWithAnOffset,因为它有两个属性——您提供的日期时间和偏移量。这使得它对于转换非常有用,但本身不会转换任何内容 …DateTimeOffset结构包括一个DateTime值,以及一个Offset属性,该属性定义当前DateTimeOffset实例的日期和时间与协调世界时(UTC)之间的差异 您的时间很有趣,不是因为DateTimeOffset,而是因为您的初始字符串格式。一旦将偏移量添加到字符串的发送中,在创建基础日期时间时,它也会考虑本地时间偏移量。在我的时区,也就是UCT-5,这就是发生的事情
Console.WriteLine(DateTime.Parse( "2012-03-01"));
3/1/2012 12:00:00 AM
Console.WriteLine(DateTime.Parse("2012-03-01 00:00:00-23:00"));
3/1/2012 6:00:00 PM
如果您检查基础DateTime上的Kind属性,只要您从带有偏移量的字符串创建它,就会发现它是本地的。DateTimeOffset实际上应该称为ADateTimeWithAnOffset,因为它有两个属性——您提供的DateTime和偏移量。这使得它对于转换非常有用,但本身不会转换任何内容 …DateTimeOffset结构包括一个DateTime值,以及一个Offset属性,该属性定义当前DateTimeOffset实例的日期和时间与协调世界时(UTC)之间的差异 您的时间很有趣,不是因为DateTimeOffset,而是因为您的初始字符串格式。一旦将偏移量添加到字符串的发送中,在创建基础日期时间时,它也会考虑本地时间偏移量。在我的时区,也就是UCT-5,这就是发生的事情
Console.WriteLine(DateTime.Parse( "2012-03-01"));
3/1/2012 12:00:00 AM
Console.WriteLine(DateTime.Parse("2012-03-01 00:00:00-23:00"));
3/1/2012 6:00:00 PM
如果您检查基础DateTime上的Kind属性,您将看到它是本地的,只要您从带有偏移量的字符串创建它。我想您遗漏的是UtcDateTime和LocalDateTime实际上是转换。因此,如果引用这两个属性,则要求转换值。因此,他们得到的值与“DateTime属性不受偏移量属性值的影响”的语句并不矛盾 UtcDateTime使用偏移量将DateTime属性的值转换为UTC(它将DateTime部分增加23小时)
LocalDateTime根据您的Windows时区设置(必须是UTC-1?)将DateTime属性的值转换为本地时间。我想您错过的是UtcDateTime和LocalDateTime实际上是转换。因此,如果引用这两个属性,则要求转换值。因此,他们得到的值与“DateTime属性不受偏移量属性值的影响”的语句并不矛盾 UtcDateTime使用偏移量将DateTime属性的值转换为UTC(它将DateTime部分增加23小时)
LocalDateTime根据您的Windows时区设置(必须是UTC-1?)将DateTime属性的值转换为您的本地时间。是的,但为什么在上面的示例中有受影响的DateTime?“dateString”具有“2012-03-01”日期,为什么DateTimeOffset将其转换为影响我的本地时间?更新了答案以讨论时间偏移。是的,但为什么我在上面的示例中具有受影响的DateTime?“dateString”具有“2012-03-01”日期,为什么DateTimeOffset将其转换为我的本地时间?更新了答案以讨论时间偏移。