我在将字符串解析为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);
以上将把dateTime作为“29/12/1989”;
返回给我我也尝试过:
var dt = DateTime.Parse("12/29/1989", System.Globalization.CultureInfo.GetCultureInfo("en-US"));
基本上我已经尝试了所有的DateTime Parse选项,并且都将返回非我格式。
我的总部设在英国,我的机器位于英国。
答案 0 :(得分:5)
所有回报我非我们格式
不,他们会返回DateTime
值。 DateTime
值不具有格式。这只是一个日期和时间。如果要将其转换回字符串,除非另有说明,否则它将使用当前文化的默认格式。
区分存储在值(日期和时间)中的数据和该值的字符串表示非常重要。
举一个类似的例子,你期望这段代码的结果是什么?
int x = Convert.ToInt32("FF", 16);
Console.WriteLine(x);
您期望“255”还是“FF”?它是255,因为将int
转换为字符串的默认格式是十进制。这个值最初是从十六进制解析并不重要 - 这不是值的一部分。将完全相同的逻辑应用于DateTime
。