DateTime解析为美国格式'错误',返回非US格式

use*_*691 -1 c# string format datetime parsing

我在将字符串解析为DateTime到US格式时遇到问题.虽然我提供了MM/dd/yyyy格式的字符串,但它仍然以dd/MM/yyyy的格式返回DateTime,我已经尝试了以下所有内容.

string[] formats = { "MM/dd/yyyy hh:mm:ss", "MM/dd/yyyy" };
DateTime dateTime;
var ex = DateTime.TryParseExact("12/29/1989", formats, provider, DateTimeStyles.None, out dateTime);
Run Code Online (Sandbox Code Playgroud)

以上将把dateTime作为"29/12/1989"返回给我;

我也尝试过:

var dt = DateTime.Parse("12/29/1989", System.Globalization.CultureInfo.GetCultureInfo("en-US"));
Run Code Online (Sandbox Code Playgroud)

基本上我已经尝试了所有的DateTime Parse选项,并且都将返回非us格式.

我在英国,我的机器的地方是英国.

Jon*_*eet 5

所有人都回报我非格式

不,他们会给你一个DateTime价值.一个DateTime值不具有的格式.这只是一个日期和时间.如果要将其转换回字符串,除非另有说明,否则它将使用当前文化的默认格式.

区分存储在值(日期和时间)中的数据与该值的字符串表示非常重要.

举一个类似的例子,你期望这段代码的结果是什么?

int x = Convert.ToInt32("FF", 16);
Console.WriteLine(x);
Run Code Online (Sandbox Code Playgroud)

你会期待"255"还是"FF"?它是255,因为将int字符串转换为字符串的默认格式是十进制.这个值最初是从十六进制解析并不重要 - 这不是值的一部分.应用完全相同的逻辑DateTime.