Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 约会时间很奇怪_C#_.net_Date_Datetime - Fatal编程技术网

C# 约会时间很奇怪

C# 约会时间很奇怪,c#,.net,date,datetime,C#,.net,Date,Datetime,为什么 w.WriteLine(Program.RegisterList[i].DateTime); 写入:11/20/2013 01:46:31 PM 但是 写入20/11/2013下午1:46:31 ??不变的文化不应该是MM/DD/YY吗?我想使用不变区域性方法,以防日期以DD/MM/YY格式滑过 谢谢 编辑:我应该提到Program.RegisterList[I]。DateTime是一个字符串 编辑2: MessageBox.Show("11/20/2013 01:46:31 PM")

为什么

w.WriteLine(Program.RegisterList[i].DateTime);
写入:
11/20/2013 01:46:31 PM

但是

写入
20/11/2013下午1:46:31

??不变的文化不应该是MM/DD/YY吗?我想使用不变区域性方法,以防日期以DD/MM/YY格式滑过

谢谢

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

编辑2:

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

CultureInvariant
仅保证格式不会在不同的区域性之间更改-它不应用于显示数据,而应仅用于持久化数据。如果您关心字符串的显示方式,那么应该使用特定的区域性来显示所需的方式


话虽如此,我不知道你所说的不同格式的“日期溜走”是什么意思。你是否正在阅读日期列表,其中一些是不同格式的?如果是这样的话,恐怕
CultureInvariant
不是答案。

CultureInvariant
只能保证格式不会在不同的文化中更改-它不应该用于显示数据,而只是用于保存数据。如果您关心字符串的显示方式,那么应该使用特定的区域性来显示所需的方式

 w.WriteLine(Convert.ToDateTime(Program.RegisterList[i].DateTime, CultureInfo.InvariantCulture).ToString());
话虽如此,我不知道你所说的不同格式的“日期溜走”是什么意思。你是否正在阅读日期列表,其中一些是不同格式的?如果是这样的话,恐怕
文化变异
不是答案

 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);
现在可以明显看出,您不是在使用不变量区域性来显示日期,而是在使用默认区域性。在你的机器上,它把一天放在第一位

总是写可读的代码,它并不慢

你写了一些你再也看不懂的代码,把自己弄糊涂了。一个简单的重写,一个喇叭的声明:

string s = Program.RegisterList[i].DateTime;
DateTime dt = Convert.ToDateTime(s, CultureInfo.InvariantCulture);
w.WriteLine(dt);
现在可以明显看出,您不是在使用不变量区域性来显示日期,而是在使用默认区域性。在你的机器上,它把一天放在第一位


始终编写可读的代码,它不会变慢。

什么是
程序的类型。RegisterList[i]。DateTime
?你能制作一个简短但完整的程序来演示这个问题吗?当然,我会把它放在一起。一sec@JonSkeet我已将其编辑到我的问题中。第一个消息框显示MM/DD/YY,第二个消息框由于某种原因转换为DD/MM/YY。您在自己的区域性中显示日期,而不是不变的。您仅使用不变量分析字符串。
程序的类型是什么。注册表列表[i]。日期时间
?你能制作一个简短但完整的程序来演示这个问题吗?当然,我会把它放在一起。一sec@JonSkeet我已将其编辑到我的问题中。第一个消息框显示MM/DD/YY,第二个消息框由于某种原因转换为DD/MM/YY。您在自己的区域性中显示日期,而不是不变的。你只是用不变量解析字符串。@HansPassant啊,我误解了不变量文化的作用。如何将日期时间更改为
MM/DD/YY HH MM SS AM/PM
格式?如果您需要特定格式,可以使用自定义格式字符串:@HansPassant Ahh,我误解了Invarient culture的做法。如何将日期时间更改为
MM/DD/YY HH MM SS AM/PM
格式?如果需要特定格式,可以使用自定义格式字符串: