如何将 "MM/dd/yy" 字符串转换为最接近未来年份的日期?

How to convert "MM/dd/yy" string to a date with the nearest future year?

我将日期作为字符串输入,格式为 MM/dd/yy

我正在尝试通过以下方式将其转换为 DateTimeOffset

string dateString = "02/11/48";

DateTimeOffset.TryParseExact(
    dateString,
    "MM/dd/yy",
    CultureInfo.InvariantCulture,
    DateTimeStyles.None,
    out DateTimeOffset date);

然而,当这个字符串被转换为DateTimeOffset时,年份被设置为1948。由于业务逻辑,我知道那里的日期总是有最近的未来年份,所以年份应该是2048.

有没有办法以这种方式将字符串转换为 DateTimeOffset,或者我是否必须在解析后在其之上添加额外的逻辑?

您可以使用这种更简单的方法:

string dateString = "02/11/48";

DateTimeOffset.TryParseExact(
    dateString,
    "MM/dd/yy",
    CultureInfo.InvariantCulture,
    DateTimeStyles.None,
    out DateTimeOffset date);

if (date < DateTimeOffset.UtcNow)
{
    date = date.AddYears(100);
}

如果解析的值是现在之前,它只是简单地增加 100 年。