3

我有一个字符串,其中存储了一个日期。

String date = "03-05-2013 00:00:00";

我将其解析为 Datetime 如下:

DateTime Start = DateTime.Parse(date);

Start.ToString()给我"3/5/2013 12:0:00 AM"

我也用过:

DateTime Start = DateTime.ParseExact(date,"dd-MM-yyyy HH:mm:ss",CultureInfo.InvariantCulture);

然后,Start.ToString()给了我"3/5/2013 12:0:00 AM",与上一个完全相同的结果。我需要保留原始格式。我该怎么做?谢谢。

4

3 回答 3

3

您解析的格式并不决定DateTime将日期转换回字符串时的格式。当您调用ToString日期时,它会从您的代码正在执行的线程的当前文化中提取格式(默认为您所在机器的文化)。

您可以通过将格式传递给ToString()ie来覆盖它

Start.ToString("dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture);

请参阅自定义日期和时间格式

于 2013-05-10T08:21:47.117 回答
3

您需要在ToString()调用中传递格式。

Start.ToString("dd-MM-yyy HH:mm:ss");
于 2013-05-10T08:22:19.423 回答
2

我需要保留原始格式。

然后,您需要在调用时再次应用相同的模式ToString

string formatted = Start.ToString("dd-MM-yyyy HH:mm:ss",
                                  CultureInfo.InvariantCulture);

(请注意,您应该在格式化时指定与解析时相同的文化,以避免时间分隔符等内容发生变化。)

请注意,对于某些格式,这可能仍然无法给出确切的原始表示形式 - 例如,如果您使用的格式包含一个月的文本,则匹配不区分大小写,因此包含“MARCH”的输入将被重新格式化为“行进”。

DateTime只是一个日期和时间(和一个“种类”,但这是另一回事)——它不像整数那样维护文本表示。区分值中的固有数据和该数据的文本表示非常重要。大多数具有多种可能的文本表示的类型都没有将“原始表示”与数据一起保留的概念。

于 2013-05-10T08:26:46.397 回答