C# 将日期格式从ddmmyyyy更改为yyyyddmm
在这种情况下,我可能会获得mmddyyyy格式或yyyymmdd格式的日期。现在我需要将收到的任何日期转换为yyyy-mm-dd格式。 之前我只以yyyymmdd的形式获取日期,所以我使用C# 将日期格式从ddmmyyyy更改为yyyyddmm,c#,date,C#,Date,在这种情况下,我可能会获得mmddyyyy格式或yyyymmdd格式的日期。现在我需要将收到的任何日期转换为yyyy-mm-dd格式。 之前我只以yyyymmdd的形式获取日期,所以我使用 Value = DateTime.ParseExact(dob, "yyyy-MM-dd",null) 并且得到了要求的结果 现在我还需要检查日期的输入格式。 有没有一种简单的方法可以做到这一点,或者我是否需要输入if-else并手动检查所有内容?您可以尝试使用第一种格式解析日期。如果解析不成功,则使用其他
Value = DateTime.ParseExact(dob, "yyyy-MM-dd",null)
并且得到了要求的结果
现在我还需要检查日期的输入格式。
有没有一种简单的方法可以做到这一点,或者我是否需要输入if-else并手动检查所有内容?您可以尝试使用第一种格式解析日期。如果解析不成功,则使用其他格式进行解析: 你应该这样做:
//example date
string dateString= "09301986";
//output date
DateTime finalDate;
if (!DateTime.TryParseExact(dateString, "ddMMyyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out finalDate))
{
DateTime.TryParseExact(dateString, "yyyyMMdd", CultureInfo.InvariantCulture,
DateTimeStyles.None, out finalDate);
}
string finaldate = finalDate.ToString("yyyy-MM-dd");
您可以使用TryParseExact方法,该方法允许您传递希望支持的可能格式的集合
DateTime dateValue;
var formats = new[] { "MM-dd-yyyy", "yyyy-MM-dd" };
if (DateTime.TryParseExact(dob, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue))
{
// do for valid date
}
else
{
// do for invalid date
}
dob的价值是多少?字符串表示形式的格式必须与指定的格式完全匹配。您的意思是传入日期字符串在日期组件之间没有分隔符,并且您不知道传入日期采用哪种格式?这将有助于您在问题中添加每种格式的日期吗?你说的是yyyyMMdd,但似乎在解析yyyy-MM-dd…?我想你的意思是MM-MM是格式字符串中的分钟,问题的顺序是MMddyyyy。非常感谢你的帮助,回答这个问题也解决了我的问题。1++1比我的解决方案更优雅,不知道阵列版本: