我有一个存储日期的字符串。
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"
,这与前一个完全相同。我需要保留原始格式。我该怎么办?感谢。
答案 0 :(得分:3)
您解析的格式并未规定将日期转换回字符串时DateTime
的格式。当您在某个日期调用ToString
时,它会从您的代码正在执行的线程的当前文化中提取格式(默认为您所在机器的文化)。
您可以通过将格式传递到ToString()
即
Start.ToString("dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture);
答案 1 :(得分:3)
您需要在ToString()
来电中传递格式。
Start.ToString("dd-MM-yyy HH:mm:ss");
答案 2 :(得分:2)
我需要保留原始格式。
然后,当您致电ToString
时,您需要再次应用相同的模式:
string formatted = Start.ToString("dd-MM-yyyy HH:mm:ss",
CultureInfo.InvariantCulture);
(请注意,格式化时应指定与解析时相同的文化,以避免时间分隔符发生变化。)
请注意,对于某些格式,这仍然可能无法提供准确的原始表示形式 - 例如,如果您使用的格式包含一个月的文本,例如,它将不区分大小写,那么输入包括&# 34; MARCH"将被重新格式化为" March"。
DateTime
值只是一个日期和时间(以及一个"kind",但这是另一个故事) - 它没有维护文本表示不超过整数。区分值中的固有数据和该数据的文本表示非常重要。大多数具有多种可能的文本表示的类型都没有保持原始表示和#34;与数据一起。