C# 如何找到日期字符串的精确格式?

C# 如何找到日期字符串的精确格式?,c#,string,datetime,date-format,culture,C#,String,Datetime,Date Format,Culture,我需要知道字符串的确切日期格式78年8月16日12:00:00 AM。我试过各种各样的弦,比如“ss-MMM-yy-hh:mm:ss”。有没有办法把它转换成通用格式。我使用的是CultureInfo.InvariantCulture类。您的格式字符串错误,您使用的是ss,它应该是dd。本文解释了自定义格式需要什么 使用 而不是 您可以使用解析字符串 DateTime dt = DateTime.ParseExact("16-Aug-78 12:00:00 AM", "dd-MMM-yy hh:m

我需要知道字符串的确切日期格式
78年8月16日12:00:00 AM
。我试过各种各样的弦,比如“ss-MMM-yy-hh:mm:ss”。有没有办法把它转换成通用格式。我使用的是
CultureInfo.InvariantCulture
类。

您的格式字符串错误,您使用的是ss,它应该是dd。本文解释了自定义格式需要什么

使用

而不是

您可以使用解析字符串

DateTime dt = DateTime.ParseExact("16-Aug-78 12:00:00 AM", "dd-MMM-yy hh:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None);

您有错误的格式字符串,您正在使用ss作为日期,它应该是dd。本文解释了自定义格式需要什么

使用

而不是

您可以使用解析字符串

DateTime dt = DateTime.ParseExact("16-Aug-78 12:00:00 AM", "dd-MMM-yy hh:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None);

您的字符串格式错误。它必须与字符串格式完全匹配。您可以改用
dd-MMM-yy-hh:mm:ss-tt
格式

这里有一个例子

或者,由于
dd-MMM-yy hh:mm:ss tt
是的标准日期和时间格式,您可以直接使用以下方法:

string s = "16-Aug-78 12:00:00 AM";
var date = DateTime.Parse(s, CultureInfo.InvariantCulture);
date.Dump();
这里有一个

有没有办法把它转换成通用格式

除非您创建自己的格式,否则无法获取字符串的格式。只有你们才能知道你们的字符串格式到底是什么,计算机却不能


比如,
2014年2月1日
可以是2014年2月1日,也可以是2014年1月2日,具体取决于您可以解析的自定义格式。

您的字符串格式错误。它必须与字符串格式完全匹配。您可以改用
dd-MMM-yy-hh:mm:ss-tt
格式

这里有一个例子

或者,由于
dd-MMM-yy hh:mm:ss tt
是的标准日期和时间格式,您可以直接使用以下方法:

string s = "16-Aug-78 12:00:00 AM";
var date = DateTime.Parse(s, CultureInfo.InvariantCulture);
date.Dump();
这里有一个

有没有办法把它转换成通用格式

除非您创建自己的格式,否则无法获取字符串的格式。只有你们才能知道你们的字符串格式到底是什么,计算机却不能

比如,
2014年2月1日
可以是2014年2月1日,也可以是2014年1月2日,这取决于您可以解析它的自定义格式。

请尝试以下操作

var dstring = "16-Aug-78 12:00:00 AM";
DateTime result;
var matchingCulture = CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(ci => DateTime.TryParse(dstring, ci, DateTimeStyles.None, out result))
尝试如下

var dstring = "16-Aug-78 12:00:00 AM";
DateTime result;
var matchingCulture = CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(ci => DateTime.TryParse(dstring, ci, DateTimeStyles.None, out result))
您可以尝试以下方法:

您可以尝试以下方法:


非常感谢。它帮助了我。但有没有可能先尝试几种具有优先级的格式,然后再尝试哪种格式是应用程序,以获得确切的值。我是用嵌套的try-catch做的。还有更好的办法吗。我注意到我的格式不对,不客气
DateTime.TryParseExact
将格式作为字符串数组的方法。这意味着您可以在方法中提供多个字符串格式。如果您的字符串与其中一种格式匹配,此方法将返回
true
。谢谢。它帮助了我。但有没有可能先尝试几种具有优先级的格式,然后再尝试哪种格式是应用程序,以获得确切的值。我是用嵌套的try-catch做的。还有更好的办法吗。我注意到我的格式不对,不客气
DateTime.TryParseExact
将格式作为字符串数组的方法。这意味着您可以在方法中提供多个字符串格式。如果字符串与其中一种格式匹配,此方法将返回
true
string strDate = "16-Aug-78 12:00:00 AM";           
DateTime datDate;
if(DateTime.TryParseExact(strDate , new string[] {"dd-MMM-yy hh:mm:ss tt" },
                       System.Globalization.CultureInfo.InvariantCulture,
                       System.Globalization.DateTimeStyles.None, out datDate))
 {
   Console.WriteLine(datDate);
 }

 else
 {
   Console.WriteLine("Error in datetime format");
 }