我有一个关于解析"dd/MM/yy"形式的日期字符串的要求,这样如果认为年份比当前年份大30年,那么它将在年份前加上19.在另一个例子中它是以20为前缀.
例子:
01/01/50 - > 01/01/1950
01/01/41 - > 01/01/2041
我不确定DateTime.ParseExact如何决定它应该使用什么前缀或者我如何以某种方式强制它(它似乎做出了明智的假设,因为01/01/12 - > 01/01/2012,I只是不知道如何决定它将切换的点.
使用该Calendar.TwoDigitYearMax属性.
获取或设置100年范围的最后一年,可以用两位数年份表示.
在你的情况下,这样的事情会起作用:
// Setup
var cultureInfo = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone();
var calendar = cultureInfo.Calendar;
calendar.TwoDigitYearMax = DateTime.Now.Year + 30;
cultureInfo.DateTimeFormat.Calendar = calendar;
// Parse
var _1950 = DateTime.ParseExact("01/01/50", "dd/MM/yy", cultureInfo);
var _2041 = DateTime.ParseExact("01/01/41", "dd/MM/yy", cultureInfo);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
604 次 |
| 最近记录: |