C# Parse-更改格式
我将尝试举例说明:C# Parse-更改格式,c#,datetime,datetime-format,C#,Datetime,Datetime Format,我将尝试举例说明: 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")); 制作:2014年1月10日晚上9:50:34 问题: 如何解析日期,并保持格式,如:dd/MM/yyyy H
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"));
制作:2014年1月10日晚上9:50:34
问题:
如何解析日期,并保持格式,如:dd/MM/yyyy HH:MM:ss,使用24小时格式,无任何PM
谢谢大家!
更新1
对不起,也许我的问题不太清楚,我会在下面解释真实情况
请不要关注DateTime的真正含义。现在
,假设我们有一个字符串
变量,格式为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
让我沮丧的是:
stringDate
中,22:50
hour表示字符串格式为24
hour时钟。(12时钟格式使用最多12小时的小时计数器)
String strNow = dateNow.ToString("dd/MM/yyyy HH:mm:ss");
如果需要,您需要将格式与DateTime
一起保存。DateTime
没有任何特定格式的概念。Parse
返回的DateTime
的值不是“10/01/2014 9:50:34 PM”-它是特定的日期和时间,而不是字符串表示形式
您可以有一个同时维护这两种格式的类型,或者如果您总是希望以相同的方式格式化,那么在格式化时只需显式指定该格式,而不必使用DateTime
值将其保留为数据
就我个人而言,在可行的情况下,我会尽量坚持使用
DateTime.ParseExact
,因为我发现预测它会做什么比较容易——但这取决于您的输入。如果输入的是您所期望的特定格式,ParseExact
确实是前进的方向,可能是使用不变的区域性来避免任何文化差异。我现在将日期存储为日期
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.
}
不要在问题标题中重复标记。谢谢。如果您需要使用第一个示例保持格式,请以字符串形式存储。显示效果很好,但当我需要解析这种格式的日期时,它会破坏它,并进行一些内置转换(例如更改24小时格式)