通用日期转美国短日期格式报错:无法识别有效DateTime
解决日期转换报错的问题
嘿,我知道你遇到的问题啦!你的输入19-01-2018 10:55:52之所以解析失败,是因为你的格式数组里没有匹配它的格式项。仔细看这个输入:它是日-月-年 24小时制时:分:秒的结构,而你现有的格式里存在两个关键问题:
- 用的是
hh(12小时制,必须配合tt标识上午/下午),但输入是24小时制的10,没有tt后缀 - 所有带时间的格式都没有包含秒数
ss的部分
另外还要注意:你需求是转换为美国短日期格式MM-dd-yyyy,但原代码里ToString("MM/dd/yyyy")用的是斜杠分隔,和需求的横杠不符哦。
下面是修正后的代码:
public static string ConvertToUSDateFormat(string dateString) { // 添加了匹配输入的dd-MM-yyyy HH:mm:ss格式,同时保留其他原有格式 string[] formats = { "dd/MM/yyyy", "dd-MMM-yyyy", "yyyy-MM-dd", "yyyy-MM-dd hh:mm:tt", "dd-MM-yyyy hh:mm:tt", "M/d/yyyy", "dd MMM yyyy", "dd/MM/yyyy hh:mm:tt", "MM-dd-yyyy hh:mm:tt", "dd-MM-yyyy h:mm:tt", "dd-MM-yyyy HH:mm:ss" // 新增匹配输入的格式 }; // 这里把ToString的格式改成MM-dd-yyyy,符合需求的美国短日期格式 string convertedDate = DateTime.ParseExact(dateString, formats, CultureInfo.InvariantCulture, DateTimeStyles.None).ToString("MM-dd-yyyy"); return convertedDate; }
这样修改后,输入19-01-2018 10:55:52就能被正确解析,并且输出01-19-2018,完美符合你的需求~
内容的提问来源于stack exchange,提问作者I Love Stackoverflow
相关产品推荐
相关产品推荐

