gpt4 book ai didi

c# - DateTime.TryParseExact CultureInfo.InvariantCulture

转载 作者:太空狗 更新时间:2023-10-30 00:32:45 24 4
gpt4 key购买 nike

谁能看出我做错了什么,我正在尝试解析日期以确保其有效日期,如果是这样,请将其转换为我需要的格式。

我已经尝试过不同的方法,但都返回 01/01/0001 00:00:00

字符串 parseArrivalDate 的值 = 02/02/2013

DateTime ukDateFormat;
string ukFormat = "0:ddd, MMM d, yyyy";
DateTime.TryParseExact(parseArrivalDate, ukFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out ukDateFormat);
DateTime test = ukDateFormat;

------------------------------------编辑-------- ------------------------

好的抱歉,我没有解释清楚。如果我输入英国格式,比如 27/02/2013,当我将英国格式设置为 dd/MM/yyyy 时,它工作正常,问题是当我输入美国或任何其他格式时,它返回了不正确的日期,所以我是改变格式,认为这是问题所在。

在阅读了您的评论后,我现在明白了,我第一次使用正确的 uk 格式,所以我的问题是,我该如何更改代码,以便可以正确解析任何日期格式。

希望这更有意义谢谢

最佳答案

你的字符串

"0:ddd, MMM d, yyyy"

有一个数字0,一个冒号:,格式对应

"Wed, Mar 27, 2013"

例如,如果文化是 "en-GB"(“英语(英国)”)。它可能来自 String.FormatConsole.WriteLine 或类似的方法调用,将其放入大括号 {} 中以格式化文本,如

Console.WriteLine("The date {0:ddd, MMM d, yyyy} was selected.", someDateTime);

它适用于如下代码:

string arrivalDateString = "Wed, Mar 27, 2013";

...

DateTime result;
string yourFormat = "ddd, MMM d, yyyy"; // no "0:" part
bool isOK = DateTime.TryParseExact(arrivalDateString, yourFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out result);
if (isOK)
{
// Worked! Answer is in 'result' variable
}
else
{
// Didn't work! 'result' variable holds midnight 1 January 0001
}

"27/03/2013"对应的格式是"dd/MM/yyyy"(或"d/M/yyyy")。 "03/27/2013"对应的格式为"MM/dd/yyyy"(或"M/d/yyyy" ).

不可能有一种方法可以处理两种日期样式,因为像这样的字符串

"01/04/2013"   /* ambiguous */

也可能是

  • 2013 年 4 月 1 日
  • 2013 年 1 月 4 日

所以它是模棱两可的,我们无法分辨日期的含义。另见 Wikipedia: Calendar date → Date format .

关于c# - DateTime.TryParseExact CultureInfo.InvariantCulture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15658909/

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