gpt4 book ai didi

c# - DateTimeOffset,理解不清楚

转载 作者:太空宇宙 更新时间:2023-11-03 20:00:38 26 4
gpt4 key购买 nike

我阅读了有关 DateTimeOffset、属性 DateTime 的文档。

https://msdn.microsoft.com/en-us/library/system.datetimeoffset.datetime(v=vs.110).aspx

The DateTime property is not affected by the value of the Offset property. This property returns both the date and the time component of a DateTimeOffset object, which makes it useful for performing DateTimeOffset to DateTime conversion. For example, if the DateTimeOffset object has a date and time value of "1/12/07 4:01pm + 7:30", the property returns a date of "1/12/07 4:01pm".

我有 +2 GMT 时区并尝试以下代码:

    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 WITH Offset。我哪里错了?

最佳答案

DateTimeOffset 实际上应该称为 ADateTimeWithAnOffset,因为它有两个属性——您提供的 DateTime 和 Offset。这使得它对转换很有用,但它本身不会转换任何东西。

From the docs ... DateTimeOffset 结构包括一个 DateTime 值,以及一个 Offset 属性,该属性定义当前 DateTimeOffset 实例的日期和时间与协调世界时 (UTC) 之间的差异。

您的时间很有趣,不是因为 DateTimeOffset,而是因为您的初始字符串格式。一旦您将偏移量添加到字符串的发送中,它就会在创建基础 DateTime 时考虑您的本地时间偏移量。在我所在的时区,即 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 属性,您会发现它是本地的,只要您从具有偏移量的字符串创建它。

关于c# - DateTimeOffset,理解不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28773548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com