DateTime.Parse - 更改格式

Cri*_* E. 0 c# datetime datetime-format

我将尝试举例说明:

var dateNow = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)

产生:10/01/2014 21:50:34

var dateNowParse = DateTime.Parse(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"));
Run Code Online (Sandbox Code Playgroud)

产生:10/01/2014 9:50:34 PM

题:

如何解析日期,并保持格式如: dd/MM/yyyy HH:mm:ss,24小时格式,没有任何PM

谢谢!

更新1

对不起,也许我的问题不是那么清楚,我会试着解释下面的实际情况.

请不要专注于真正的含义DateTime.Now,假设我们有一个string格式的变量10/01/2014 21:50:34,然后我尝试解析它,并将结果存储在另一个变量中.我愿意实现的是将结果保存在具有确切格式的DateTime变量中10/01/2014 21:50:34.

现在这里是一个片段:

var stringDate = "10/01/2014 22:50:30";
DateTime parsedDate = DateTime.Parse(stringDate, CultureInfo.InvariantCulture);
//parsedDate result is: 10/01/2014 10:50:30 PM
Run Code Online (Sandbox Code Playgroud)

让我感到沮丧的是:

  1. stringDate22:50时间表示,字符串格式化为24小时制.(12时钟格式使用小时计数器最多12个)

  2. 如果我使用22:50,逻辑上不是输出不应该使用任何AM PM和12小时格式?

Jon*_*eet 9

如何解析日期,并保持格式

如果需要,您需要将格式保留在旁边DateTime.一个DateTime不会具有的特定格式是任何概念.的值DateTime通过返回的Parse不是"2014年10月1日下午9点50分34秒" -这是特定的日期和时间,而不是一个字符串表示.

您可以使用一种类型将两者保持在一起 - 或者如果您始终希望以相同的方式进行格式化,则只需在格式化时明确指定该格式,而不将其保留为DateTime值的数据.

就个人而言,我会尽量坚持DateTime.ParseExact可行,因为我发现它更容易预测它会做什么 - 但它确实取决于你的输入.如果它的输入采用您期望的特定格式,那么ParseExact实际上就是前进的方向,可能采用不变的文化来避免任何文化差异.