C# 如何统一各种日期时间格式?
我需要接受文本文件中的C# 如何统一各种日期时间格式?,c#,.net,parsing,datetime,C#,.net,Parsing,Datetime,我需要接受文本文件中的DateTime或Date信息。挑战在于,此日期信息每次都以任何格式提供。它可以是以下任何格式 20160131 23:30:15 31032016 23:30:15 2016/01/31 23:30:15 01/31/2016 23:30:15 31/01/2016 23:30:15 31.01.2016 23:30:15 31/01/2016 23:30 // ... more formats come with '-' separators as well and s
DateTime
或Date
信息。挑战在于,此日期信息每次都以任何格式提供。它可以是以下任何格式
20160131 23:30:15
31032016 23:30:15
2016/01/31 23:30:15
01/31/2016 23:30:15
31/01/2016 23:30:15
31.01.2016 23:30:15
31/01/2016 23:30
// ... more formats come with '-' separators as well and some similar format
如何将这些随机格式统一为
字符串
,甚至直接统一为日期时间
?或者是否有任何第三方库可以处理这种情况?DateTime.Parse
将为您处理几乎所有这些问题。试试看!:-)
如果您担心使用不同的分隔符,请首先使用字符串。将'-'
的
替换为'/'
更好的问题是:你如何处理2016年4月7日?您无法确定是7月4日还是4月7日,您需要某种反馈来设置日期时间。
DateTime.Parse
将为您解决几乎所有这些问题。试试看!:-)
如果您担心使用不同的分隔符,请首先使用字符串。将'-'
的
替换为'/'
更好的问题是:你如何处理2016年4月7日?您无法确定是7月4日还是4月7日,您需要某种反馈来设置它。使用
TryParseExact
(或ParseExact
)并将所有格式指定为数组string[]formats
string[] formats = { "yyyyMMdd HH:mm:ss", "ddMMyyyy HH:mm:ss",
"yyyy/MM/dd HH:mm:ss", "MM/dd/yyyy HH:mm:ss" }; //and so on, add more
string dtText = "01/31/2016 23:30:15"; //example
DateTime dt;
bool result = DateTime.TryParseExact(dtText, formats, CultureInfo.InvariantCulture,
DateTimeStyles.AssumeLocal, out dt);
一旦有了它,就可以处理所有指定的DateTime
格式
重要的 请注意,不可能统一所有可能的
日期时间
格式,因为其中一些格式是相互排斥的:
Given an ambiguous case:
"12-12-2012"
and formats:
"dd-MM-yyyy"
"MM-dd-yyyy"
上述两种格式中只能使用一种格式
这就是为什么,根据您的需要为每个项目进行定制对您有好处
如果希望此文件可重用和自定义,我建议您创建一个主文件(
.txt
或.xml
),其中存储您可能希望在项目中使用的所有日期时间
格式
masterdtformat.txt
"yyyy/MM/dd HH:mm:ss"
"yyyyMMdd HH:mm:ss"
"ddMMyyyy HH:mm:ss"
"MM/dd/yyyy HH:mm:ss"
"dd-MMM-yyyy HH:mm:ss"
//and so on...
然后,每当您有一个项目时,您只需要将一些格式从主文件转换为特定的项目文件。在项目中,加载该项目文件以提供所需的所有格式
projectdtformat.txt
"yyyy/MM/dd HH:mm:ss"
"yyyyMMdd HH:mm:ss"
//suppose you only need two
这样,无论您曾经指定过什么格式,都可以重用。通过更改项目文件,为给定项目提供有效的
日期时间
格式的机制也将很容易实现。使用TryParseExact
(或ParseExact
)并将所有格式指定为数组字符串[]格式
string[] formats = { "yyyyMMdd HH:mm:ss", "ddMMyyyy HH:mm:ss",
"yyyy/MM/dd HH:mm:ss", "MM/dd/yyyy HH:mm:ss" }; //and so on, add more
string dtText = "01/31/2016 23:30:15"; //example
DateTime dt;
bool result = DateTime.TryParseExact(dtText, formats, CultureInfo.InvariantCulture,
DateTimeStyles.AssumeLocal, out dt);
一旦有了它,就可以处理所有指定的DateTime
格式
重要的 请注意,不可能统一所有可能的
日期时间
格式,因为其中一些格式是相互排斥的:
Given an ambiguous case:
"12-12-2012"
and formats:
"dd-MM-yyyy"
"MM-dd-yyyy"
上述两种格式中只能使用一种格式
这就是为什么,根据您的需要为每个项目进行定制对您有好处
如果希望此文件可重用和自定义,我建议您创建一个主文件(
.txt
或.xml
),其中存储您可能希望在项目中使用的所有日期时间
格式
masterdtformat.txt
"yyyy/MM/dd HH:mm:ss"
"yyyyMMdd HH:mm:ss"
"ddMMyyyy HH:mm:ss"
"MM/dd/yyyy HH:mm:ss"
"dd-MMM-yyyy HH:mm:ss"
//and so on...
然后,每当您有一个项目时,您只需要将一些格式从主文件转换为特定的项目文件。在项目中,加载该项目文件以提供所需的所有格式
projectdtformat.txt
"yyyy/MM/dd HH:mm:ss"
"yyyyMMdd HH:mm:ss"
//suppose you only need two
这样,无论您曾经指定过什么格式,都可以重用。通过更改项目文件,为给定项目提供有效的
DateTime
格式的机制也将非常容易地完成。当然,关于最后一句话。如果没有这个问题的答案,这个任务是不明确的。当然,关于你的最后一句话。如果没有此问题的答案,则任务定义不正确。文本文件不包含传达日期所需的信息。谁把它扔掉了?文本文件不包含传达日期所需的信息。谁把它扔掉了?