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

时间:2014-06-19 10:31:52

标签: c# string parsing datetime format

我在将字符串解析为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选项,并且都将返回非我格式。

我的总部设在英国,我的机器位于英国。

1 个答案:

答案 0 :(得分:5)

  

所有回报我非我们格式

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

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

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

int x = Convert.ToInt32("FF", 16);
Console.WriteLine(x);

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

相关问题