我无法通过抛出不正确格式的异常来将字符串转换为日期:
这是patterens:
DD-MM-YYYY
MM-DD-YYYY
YYYY-DD-MM
YYYY-MM-DD
YYYYDDMM
YYYYMMDD
格式来自下拉列表,这是我尝试不同的方法,但仍然抛出异常:
strCurrentFormat = rcboDateFormat.SelectedValue.ToString();
DateTime db = DateTime.ParseExact(strOldDate, "DD-MM-YYYY", CultureInfo.InvariantCulture);
//DateTime loadedDate = DateTime.ParseExact(strOldDate, strCurrentFormat, null);
之前我已经解决了这个问题,取了字符串,将它们拆分并将年,月和日移动到适当的格式,但这需要很长时间,如果有人知道更简单的方法,那将是一个巨大的帮助。
答案 0 :(得分:5)
两件事:
首先 - 使用正确的格式字符串。 D
和Y
不是已知的格式说明符。 d
和y
是。{/ p>
第二 - 您可以将格式放入字符串数组中,并使用获取该格式列表的ParseExact
overload。
string[] formats = new string[]
{"dd-MM-yyyy",
"MM-dd-yyyy",
"yyyy-dd-MM",
"yyyy-MM-dd",
"yyyyddMM",
"yyyyMMdd"};
DateTime db = DateTime.ParseExact(strOldDate,
formats,
CultureInfo.InvariantCulture,
DateTimeStyles.None);
将按顺序尝试格式。
答案 1 :(得分:1)
取自http://www.codeproject.com/Articles/14743/Easy-String-to-DateTime-DateTime-to-String-and-For
d - 没有前导零的月份的数字日。 dd - 月份的数字日,前导零。 ddd - 星期几的缩写名称。 dddd - 星期几的全名。
f,ff,fff,ffff,fffff,ffffff,fffffff - 一秒钟的分数。 Fs越多,精度越高。
h - 12小时时钟,没有前导零。 hh - 12小时时钟,前导零。 H - 24小时制,没有前导零。 HH - 24小时时钟,前导零。
m - 没有前导零的分钟。 mm - 带前导零的分钟。
M - 没有前导零的数字月份。 MM - 数字月份,前导零。 MMM - 月份的缩写名称。 MMMM - 全月名称。
s - 没有前导零的秒数。 ss - 领先零的秒数。
t - 上午/下午,但只有第一个字母。 tt - 上午/下午(上午/下午)
y - 年外世纪和领先零。 yy - 世纪之年,领先零。 yyyy - 世纪之年。
zz - 使用+/-设置时区关闭。
答案 2 :(得分:1)