gpt4 book ai didi

c# - Convert.ToDateTime 在下午日期/时间值上导致 FormatException

转载 作者:可可西里 更新时间:2023-11-01 08:41:47 39 4
gpt4 key购买 nike

我们有一个应用程序解析以下格式的日期/时间值:

2009-10-10 09:19:12.124
2009-10-10 12:13:14.852
2009-10-10 13:00:00
2009-10-10 15:23:32.022

一个特定的服务器突然(今天)在 13:00:00 或更晚的任何时间开始解析失败。这个特定的客户端有五台服务器,只有一台有问题。我们有几十个其他客户,总共有数百台服务器没有问题。

System.FormatException: String was not recognized as a valid DateTime.
at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
at System.DateTime.Parse(String s, IFormatProvider provider)
at System.Convert.ToDateTime(String value, IFormatProvider provider)
at System.String.System.IConvertible.ToDateTime(IFormatProvider provider)
at System.Convert.ToDateTime(Object value)

我使用 DateTime.Parse(s, CultureInfo.CurrentCulture) comappred 到 DateTime.Parse(s, CultureInfo.InvariantCulture) 进行了测试,问题只出现在 CurrentCulture 中。但是,CurrentCulture 就像所有其他服务器一样是“en-US”,我在区域或语言设置中没有发现任何不同之处。

有没有人见过这个?与我可以调查的内容相关的建议?

编辑:感谢您到目前为止的回答。但是,我正在寻找有关要研究的配置的建议,这可能会导致它突然改变行为并在它工作多年并在数百个其他服务器上工作时停止工作。我已经为下一个版本更改了它,但我正在寻找配置更改以在当前安装的过渡期间修复此问题。

最佳答案

如果您确切知道格式,请告诉应用程序它是什么 - 使用 DateTime.ParseExact 而不仅仅是 DateTime.Parse。 (正如其他人所说,还要指定不变的区域性,以消除任何更多变化。)这给了你更多的控制权:

using System;
using System.Globalization;

class Test
{
static void Main()
{
Parse("2009-10-10 09:19:12.124");
Parse("2009-10-10 12:13:14.852");
Parse("2009-10-10 13:00:00");
Parse("2009-10-10 15:23:32.022");
}

static readonly string ShortFormat = "yyyy-MM-dd HH:mm:ss";
static readonly string LongFormat = "yyyy-MM-dd HH:mm:ss.fff";

static readonly string[] Formats = { ShortFormat, LongFormat };

static void Parse(string text)
{
// Adjust styles as per requirements
DateTime result = DateTime.ParseExact(text, Formats,
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal);
Console.WriteLine(result);
}
}

关于c# - Convert.ToDateTime 在下午日期/时间值上导致 FormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579814/

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