我将尝试举例说明:
var dateNow = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
产生:10/01/2014 21:50:34
var dateNowParse = DateTime.Parse(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"));
产生:10/01/2014 9:50:34 PM
问题:
如何解析日期,并保持格式如下: dd / MM / yyyy HH:mm:ss , 24 小时格式,没有任何PM
谢谢!
对不起,也许我的问题不太清楚,我会尝试解释下面的实际情况。
请不要关注DateTime.Now
的真实含义,假设我们有一个string
变量格式为10/01/2014 21:50:34
,然后我尝试解析它,并将结果存储在另一个变量。我愿意实现的是将结果保存在具有确切格式10/01/2014 21:50:34
的DateTime变量中。
现在这里是一个片段:
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
让我感到沮丧的是:
在stringDate
中,22:50
小时表示字符串的格式为24
小时。 ( 12时钟格式使用小时计数器,最多12个)
如果我使用22:50,逻辑上不是输出不应该使用任何AM PM和12小时格式吗?
答案 0 :(得分:9)
如何解析日期,并保持格式
如果您愿意,您需要将格式与DateTime
保持一致。 DateTime
使不具有任何特定格式的概念。 DateTime
返回的Parse
的值不是“10/01/2014 9:50:34 PM” - 这是特定的日期和时间,但不是 a字符串表示。
您可以使用一种类型将两者保持在一起 - 或者如果您始终希望以相同的方式进行格式化,则只需在格式化时明确指定该格式,而不将其保留为DateTime
值的数据。 / p>
就个人而言,我会尽可能坚持DateTime.ParseExact
,因为我发现它更容易预测它会做什么 - 但它确实取决于你的输入。如果输入的是您期望的特定格式,ParseExact
确实是前进的方向,可能采用不变的文化来避免任何文化差异。
答案 1 :(得分:1)
我现在将日期存储为日期
DateTime dateNow = DateTime.Now;
然后当你需要用那种格式显示它
String strNow = dateNow.ToString("dd/MM/yyyy HH:mm:ss");
如果你有一个格式在一个字符串变量strNow中的日期,并希望将它放在DateTime中我会确保捕获格式异常
DateTime dateNow;
try {
dateNow = DateTime.ParseExact(strNow, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
}
catch (FormatException) {
//Log something or set a default date.
}