- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
谁能看出我做错了什么,我正在尝试解析日期以确保其有效日期,如果是这样,请将其转换为我需要的格式。
我已经尝试过不同的方法,但都返回 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.Format
、Console.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 */
也可能是
所以它是模棱两可的,我们无法分辨日期的含义。另见 Wikipedia: Calendar date → Date format .
关于c# - DateTime.TryParseExact CultureInfo.InvariantCulture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15658909/
我必须在 Javascript 中预先验证一个在 C# 中将成为 DateTime 的字符串。DateTime 解析使用 InvariantCulture。 有人知道为 InvariantCultur
对于从 C#(最新版本)编译的给定 .NET 程序集,我想强制所有字符串插值系统地使用 CultureInfo.InvariantCulture 而不是使用 CultureInfo.CurrentCu
我有一个像这样的文本字符串: var foo = "FooBar"; 我想声明第二个名为 bar 的字符串,并使其等于我的第一个 foo 的第一个和第四个字符,所以我这样做: var bar = fo
我正在从事一个在文本框中使用小数的项目。我目前正在开发一台将小数点分隔符设置为“,”而不是“。”的机器。所以我不得不在将文本字符串解析为十进制时使用这句话: decimal number = Deci
我知道日期/数字的文化规则足以写一整本书,但我想我有一个简单的问题.. 使用 InvariantCulture 是否基本上意味着您明确定义值(日期/数字/其他)将输入/显示的文化?它会覆盖任何其他文化
我的插入请求中有一个 double 值。我将此 double 值中的逗号更改为一个点,并且当我像在 MySQL 规则中一样创建 MySqlCommand 时使用 12.5 而不是 12,5。但是我的字
根据 MSDN:StringComparison.InvariantCulture: Specifies the culture, case, and sort rules to be used by
如何使用 Single.Parse 解析 1,2?询问的原因是,当我使用 CultureInfo.InvariantCulture 时,我没有得到 1.2,而是 12。 “不变文化”不应该忽略文化吗?
我目前正在修复 FxCop 问题,所以我遇到了在使用 ToString() 转换字符串时必须提供 cultureinfo 的问题。 目前在我的代码中我们没有作为 IFormatProvider 传递任
我正在尝试使用 NUnit 对 getprice 方法进行单元测试。我坚持将原始价格解析为双倍价格。我的 cultureinfo 是 en-US 但为了这次测试我将它设置为 de-DE。使用 numb
我制作了一个 C# 应用程序,基本上可以解析一些 html,包括数字。在我的电脑上,一切都运行良好,所以我发布了它,一个用户告诉我它不起作用,所以他给我发了一个日志,里面有 2.5 不能被解析为 do
谁能看出我做错了什么,我正在尝试解析日期以确保其有效日期,如果是这样,请将其转换为我需要的格式。 我已经尝试过不同的方法,但都返回 01/01/0001 00:00:00。 字符串 parseArri
我在 asp.net mvc View 上有几个隐藏的输入。它们的值包含 double 类型的对象。我希望它们使用 InvariantCulture 呈现,因为它们用于在客户端上提供给 api(谷歌地
在我的代码中,我经常使用以下转换: Convert.ToInt32(value, Cultureinfo.InvariantCulture); Convert.ToDecimal(value, Cul
当我在 C# 中有这样一段代码时: double a = 0.003; Console.WriteLine(a); 它打印“0,003”。 如果我有另一段代码: double a = 0.003; C
在c#中比较两个字符串是否相等时,InvariantCulture 和 Ordinal 比较有什么区别? 最佳答案 不变文化 使用一组“标准”字符顺序(a、b、c、...等)。这与某些特定的语言环境形
当抛出异常时,我经常传入一个格式化的字符串来公开有关已发生问题的详细信息。如果可能,我总是指定一个格式化提供程序(这是一个很好的做法,否则你可能会忘记决定哪种文化是合适的,因为默认是当前文化,这可能会
在 .Net 中处理未指定语言环境的数字时,我使用: return double.Parse(myStr, CultureInfo.InvariantCulture.NumberFormat); Ja
这个问题在这里已经有了答案: Is Int32.ToString() culture-specific? (7 个答案) 关闭 8 年前。 是否存在不使用破折号 (-) 表示负数的文化? 如果我不必
这是我的问题,我的机器使用法语文化,因此默认情况下它以法语方式解析 (3,141592)。 如果机器文化不是美国,这里是重现我的问题的代码: float number = 4103.26808
我是一名优秀的程序员,十分优秀!