gpt4 book ai didi

c# - 在我们的 C# DateTime 类型中,是什么导致了这种行为?

转载 作者:太空狗 更新时间:2023-10-29 22:12:43 27 4
gpt4 key购买 nike

[Test]
public void Sadness()
{
var dateTime = DateTime.UtcNow;
Assert.That(dateTime, Is.EqualTo(DateTime.Parse(dateTime.ToString())));
}

失败:

 Expected: 2011-10-31 06:12:44.000
But was: 2011-10-31 06:12:44.350

我想知道 ToString() 等幕后发生了什么导致了这种行为。

看到乔恩的回答后编辑:

[Test]
public void NewSadness()
{
var dateTime = DateTime.UtcNow;
Assert.That(dateTime, Is.EqualTo(DateTime.Parse(dateTime.ToString("o"))));
}

结果:

Expected: 2011-10-31 12:03:04.161
But was: 2011-10-31 06:33:04.161

与大写和小写 'o' 的结果相同。我正在阅读文档,但仍然不清楚。

最佳答案

看看 dateTime.ToString() 产生的结果 - 它通常只精确到秒,尽管它取决于文化设置。如果 ToString() 只给出精确到秒的结果,那么解析字符串就无法提供更多信息...

您可以使用“o”standard format string提供可往返的字符串表示。例如,目前它产生如下内容:

2011-10-31T06:28:34.6425574Z

编辑:您需要使用相同的说明符进行解析以获得相同的结果:

string text = dateTime.ToString("o");
// Culture is irrelevant when using the "o" specifier
DateTime parsed = DateTime.ParseExact(text, "o", null,
DateTimeStyles.RoundtripKind);

关于c# - 在我们的 C# DateTime 类型中,是什么导致了这种行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7950502/

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