从The "yy" Custom Format Specifier
在解析操作中,使用“yy”自定义格式说明符解析的两位数年份将根据
Calendar.TwoDigitYearMax
格式提供者当前日历的属性进行解释。
在解析操作中,使用“yy”自定义格式说明符解析的两位数年份基于格式提供程序当前日历的 Calendar.TwoDigitYearMax 属性进行解释。下面的示例使用 en-US 区域性的默认公历分析具有两位数年份的日期的字符串表示形式。
从GregorianCalendar.TwoDigitYearMax
此属性允许将 2 位数年份正确转换为 4 位数年份。例如,如果将此属性设置为 2029,则 100 年的范围是从 1930 到 2029。因此,两位数的值 30 被解释为 1930,而两位数的值 29 被解释为 2029。
您的应用程序应将此值设置为 99,以指示按字面意思获取 2 位数年份。例如,如果此属性设置为 99,则 100 年范围是从 0(对于大多数日历而言不是有效值)到 99。因此,2 位值 30 被解释为 30。
即使你反编译GregorianCalendar.TwoDigitYearMax
属性,你也可以看到自己;
public override int TwoDigitYearMax
{
get
{
if (this.twoDigitYearMax == -1)
this.twoDigitYearMax = Calendar.GetSystemTwoDigitYearSetting(this.ID, 2029);
return this.twoDigitYearMax;
}
Boluc's answer
完全正确。我还想指出您的格式部分。
您不能使用格式格式化两位数年份YYYY
。您需要使用yy
允许两位数格式的格式。
DateTime dt = DateTime.ParseExact("01-01-50 00:00:00", "dd-MM-yy HH:mm:ss", CultureInfo.InvariantCulture);
印刷
01.01.1950 00:00:00
这里一个DEMO
.
查看更多信息Custom Date and Time Format Strings