Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何统一各种日期时间格式?_C#_.net_Parsing_Datetime - Fatal编程技术网

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
格式的机制也将非常容易地完成。

当然,关于最后一句话。如果没有这个问题的答案,这个任务是不明确的。当然,关于你的最后一句话。如果没有此问题的答案,则任务定义不正确。文本文件不包含传达日期所需的信息。谁把它扔掉了?文本文件不包含传达日期所需的信息。谁把它扔掉了?