gpt4 book ai didi

c# - 字符串在一台 PC 上未被识别为有效的日期时间

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

语言:C#,.Net框架:4.5,使用的方法:DateTime.ParseExact

因此,在我们的一个项目中,我们使用以下函数将字符串解析为 DateTime:

private DateTime FormatDate(string date, string format)
{
try
{
IFormatProvider culture = new CultureInfo("en-US", true);
DateTime dt = DateTime.ParseExact(date, format, culture);
return dt;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}

并这样调用它:

DateTime startDate = FormatDate("01/17/2016", "M/d/yyyy");

在我们的 3 台 PC 上,当每台 PC 上的日期格式为 dd/MM/yyyy 时,此代码可以完美运行,但在其中 2 台 PC 上,当它们的日期格式为 dd-MMM-yy 时,它会在尝试执行时产生错误精确解析:

String was not recognized as a valid DateTime.

即使使用 dd-MMM-yy 格式,它仍然可以在第三台 PC 上工作。我比较了所有 3 台 PC 上的日期和时间设置,设置都相同,唯一的区别是我们在 2 台 PC 上使用 Visual Studio 2013,而在第三台 Visual Studio 2015 上。

异常详情:

消息:字符串未被识别为有效的日期时间。

InnerException:没有内部异常

堆栈:在 System.DateTime.ParseExact(String s, String format, IFormatProvider provider) 在 AssetTracking.PopUpWindows.AddItem_Warranty.MakeReminder(TrackersDataContext atdc, Items ni, string itemId) 在 d:\Solutions\Trackers\Trackers\PopUpWindows\AddItem_Warranty.xaml.cs:line 807 在 Trackers.PopUpWindows.AddItem_Warranty.<>c__DisplayClass8.b__3() 在 d:\Solutions\Tackers\Trackers\PopUpWindows\AddItem_Warranty.xaml.cs:line 685

问题:我不确定,是问题的不同 IDE 部分吗?或者还有什么可以在某些 PC 上产生此错误,而在具有完全相同日期和时间设置的其他 PC 上则不会?

最佳答案

首先,您的异常处理被破坏了:

private DateTime FormatDate(string date, string format)
{
try
{
IFormatProvider culture = new CultureInfo("en-US", true);
return DateTime.ParseExact(date, format, culture);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}

catch block 中没有执行任何操作,因此它只是中断了堆栈跟踪。全部删除:

private DateTime FormatDate(string date, string format)
{
IFormatProvider culture = new CultureInfo("en-US", true);
return DateTime.ParseExact(date, format, culture);
}

第二点是,您提供的值实际上与您指定的模式dd-MMM-yy不匹配。所以很明显 DateTime.ParseExact 函数会抛出一个适当的异常。以下是有效输入值的示例:

var startDate = FormatDate("11-Mar-16", "dd-MMM-yy");

如果您将月份表示为数字,请删除多余的 M

关于c# - 字符串在一台 PC 上未被识别为有效的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38457528/

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