C# 将日期的不同字符串格式转换为特定的日期时间格式

C# 将日期的不同字符串格式转换为特定的日期时间格式,c#,date,C#,Date,我在c#中的文件中有不同的日期字符串格式,如 2018-07-02T19:04:11.188-04:00 2018年6月15日//mm/dd/yyyy 2018年6月22日//dd/mm/yyyy 2018年6月4日//mm/dd/yyyy 我试着像这样改变信仰 string publishDate= "2018-07-02T19:04:11.188-04:00"; //string publishDate= "06/15/2018"; //string publishDate= "22/0

我在c#中的文件中有不同的日期字符串格式,如

  • 2018-07-02T19:04:11.188-04:00
  • 2018年6月15日//mm/dd/yyyy
  • 2018年6月22日//dd/mm/yyyy
  • 2018年6月4日//mm/dd/yyyy
我试着像这样改变信仰

string publishDate= "2018-07-02T19:04:11.188-04:00";
//string publishDate= "06/15/2018";
//string publishDate= "22/06/2018";

DateTime date = DateTime.Parse(publishDate);
return date.ToString("dd-MMM-yyyy");
对于2018年6月15日<代码>而言,它表示<代码>字符串未被识别为有效的日期时间。但是,它完美地将2018年6月22日<代码>转换为2018年6月22日

它将如何确定日期
2018年6月4日
是否指
mm/dd/yyyy

试试这段代码:)


通过你告诉它日期的格式。它有一些默认格式,但如果你有随机字符串,你必须告诉它它们的意思。你的问题是“它如何确定
04/06/2018
是指
MM/dd/yyyy
还是
dd/MM/yyyyy
”?(答案是,除非是在其他类似日期的背景下,否则你不能这样做。)
DateTime date;

if (!DateTime.TryParse(publishDate, out date)){
    date = DateTime.ParseExact(publishDate, "MM/dd/yyyy", CultureInfo.InvariantCulture);
}