我有一些遗留代码,我们正在看到一些问题。例如,如果我们有,
var dt2030 = new DateTime(2030, 01, 01);
var dt1 = Convert.ToDateTime(dt2030.ToString("dd/MM/yy"));这里的dt1表示1930年。yy有固定格式吗?我的意思是,如果它是10年不同的当前,那么采取更老,其他采取较新的一年?

发布于 2020-06-14 08:24:53
默认日历从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);发布于 2020-06-14 08:29:05
代码中的问题是yy。你必须使用yyyy。您应该使用正确的格式yyyy。
var dt2030 = new DateTime(2030, 01, 01);
var dt1 = Convert.ToDateTime(dt2030.ToString("dd/MM/yyyy"));
Console.WriteLine(dt1);https://stackoverflow.com/questions/62369967
复制相似问题