DateTime很奇怪

时间:2013-11-20 18:52:12

标签: c# .net date datetime

怎么来

w.WriteLine(Program.RegisterList[i].DateTime);

写道:11/20/2013 01:46:31 PM

但是

w.WriteLine(Convert.ToDateTime(Program.RegisterList[i].DateTime, CultureInfo.InvariantCulture).ToString());

20/11/2013 1:46:31 PM

?是不是不变的文化应该使它成为MM / DD / YY?我想使用不变的文化方法,以DD / MM / YY格式输入日期。

谢谢!

编辑:我应该提到Program.RegisterList[i].DateTime是一个字符串。

EDIT2:

MessageBox.Show("11/20/2013 01:46:31 PM");
MessageBox.Show(Convert.ToDateTime("11/20/2013 01:46:31 PM", CultureInfo.InvariantCulture).ToString());

2 个答案:

答案 0 :(得分:10)

 w.WriteLine(Convert.ToDateTime(Program.RegisterList[i].DateTime, CultureInfo.InvariantCulture).ToString());

通过编写您无法理解的代码,您感到困惑。简单改写一个鸣笛声明:

string s = Program.RegisterList[i].DateTime;
DateTime dt = Convert.ToDateTime(s, CultureInfo.InvariantCulture);
w.WriteLine(dt);

现在应该明确表示您使用InvariantCulture来显示日期,它使用默认文化。在你的机器上哪一天把这一天放在第一位。

始终写可读代码, 更慢。

答案 1 :(得分:2)

CultureInvariant只保证格式不会在不同文化中发生变化 - 它不应该用于显示数据,只能用于保存数据。如果您担心字符串的显示方式,则应使用显示所需方式的特定文化。 More from MSDN

话虽如此,我不确定你用不同格式的“日期滑落”是什么意思。你在阅读日期列表,有些格式不同吗?如果是这样,我恐怕CultureInvariant不是答案。