我有一些旧代码,我们看到了一些问题。例如,如果有,
var dt2030 = new DateTime(2030, 01, 01);
var dt1 = Convert.ToDateTime(dt2030.ToString("dd/MM/yy"));
此处的dt1表示1930。yy是否有固定格式?我的意思是,如果它与当前时间相差10年,那么要花更多的时间才能获得新的一年?
答案 0 :(得分:2)
您的代码中的问题是yy
。您必须使用yyyy
。您应使用正确的格式yyyy
。
var dt2030 = new DateTime(2030, 01, 01);
var dt1 = Convert.ToDateTime(dt2030.ToString("dd/MM/yyyy"));
Console.WriteLine(dt1);
答案 1 :(得分:1)
默认日历从1930年到2029年,因此,如果您要求它解析年份30
,默认情况下,日期不能为1930
。
一种可能的解决方案是使用CultureInfo并扩大范围,然后在解析日期时还将CultureInfo作为参数传递给以下位置:
CultureInfo ci = new CultureInfo(CultureInfo.CurrentCulture.LCID);
ci.Calendar.TwoDigitYearMax = 2099;
var dt2030 = new DateTime(2030, 01, 01);
var dt1 = Convert.ToDateTime(dt2030.ToString("dd/MM/yy"), ci);
Console.WriteLine(dt1);