c# – 如何将任何日期格式转换为yyyy-MM-dd

我的应用程序解析字符串数据,提取日期并确定日期格式并将其转换为yyyy-MM-dd。

源日期可以是任何石灰dd-mm-yyyy,dd / mm / yyyy,mm-dd-yyyy,mm / dd / yyyy或甚至yyyy-MM-dd。

除了使用开关盒尝试不同的排列和组合之外,还有其他有效的方法吗?

string sourceDate = "31-08-2012"; String.Format("{0:yyyy-MM-dd}", sourceDate); 

上面的代码只返回相同的sourceDate“31-08-2012”。

 string DateString = "11/12/2009"; IFormatProvider culture = new CultureInfo("en-US", true); DateTime dateVal = DateTime.ParseExact(DateString, "yyyy-MM-dd", culture); 

这些链接也可以帮助您

DateTime.ToString()模式

DateTime的字符串格式[C#]

将您的字符串转换为DateTime ,然后使用DateTime.ToString("yyyy-MM-dd");

 DateTime temp = DateTime.ParseExact(sourceDate, "dd-MM-yyyy", CultureInfo.InvariantCulture); string str = temp.ToString("yyyy-MM-ddd"); 
 string sourceDateText = "31-08-2012"; DateTime sourceDate = DateTime.Parse(sourceDateText, "dd-MM-yyyy") string formatted = sourceDate.ToString("yyyy-MM-dd"); 

您需要将输入解析为DateTime对象,然后将其转换为您想要的任何文本格式。

如果您不确定将获得何种格式,可以使用validation或datetimePicker或其他组件将用户限制为固定格式。

这是您的主要问题:

源日期可以是dd-mm-yyyy,dd / mm / yyyy,mm-dd-yyyy,mm / dd / yyyy或甚至yyyy-MM-dd。

如果您在01/02/2013 ,是1月2日还是2月1日? 您应该首先解决此问题,并且解析输入将更容易。

我建议你退后一步,探索一下你想要更详细解决的问题。

您可以通过以下方式将日期格式从dd/MM/yyyy更改为yyyy-MM-dd

 string date = DateTime.ParseExact(SourceDate, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd"); 

在这里, SourceDate是变量,您将在其中获得所选日期。