C# 如何转换;年月日;是否将字符串设置为具有最近未来年份的日期?
我将日期作为字符串输入,格式为C# 如何转换;年月日;是否将字符串设置为具有最近未来年份的日期?,c#,.net-5,datetimeoffset,C#,.net 5,Datetimeoffset,我将日期作为字符串输入,格式为MM/dd/yy 我正试图通过以下方式将其转换为DateTimeOffset: string dateString = "02/11/48"; DateTimeOffset.TryParseExact( dateString, "MM/dd/yy", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTimeOffse
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);
}
string dateString=“02/11/48”;
DateTimeOffset.TryParseExact(
日期字符串,
“年月日”,
CultureInfo.InvariantCulture,
DateTimeStyles。无,
out date time offset date);
如果(日期
如果解析值早于现在,则只需增加100年。您可以使用以下更简单的方法:
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);
}
string dateString=“02/11/48”;
DateTimeOffset.TryParseExact(
日期字符串,
“年月日”,
CultureInfo.InvariantCulture,
DateTimeStyles。无,
out date time offset date);
如果(日期
如果解析的值在现在之前,它只会增加100年。这是否回答了您的问题?所以,如果有人输入昨天的日期,你想推算出100年吗?@Flydog57是的,没错,因为它实际上不是昨天的日期,它是未来该日期最接近的值。这回答了你的问题吗?所以,如果有人输入昨天的日期,你想推算出100年吗?@Flydog57是的,没错,因为它实际上不是昨天的日期,它是未来该日期最接近的值。2月29日只有一个小问题。在99.5%的情况下,一个世纪相隔两年要么都是闰年,要么两者都不是。但举例来说,2000年是闰年,2100年将不是。事实上,这是正确的,我没有想到。因为我们在400年周期中处于如此早期的位置,几乎需要279年才会出现问题。(特别是——在2300年3月1日,有效字符串“02/29/00”表示2月29日2400,一个确实存在的日期,将无法解析,而不是返回2月29日2300,因为该日期不存在)欢迎使用Y2K3 bug。谢谢,我想当时必须有其他人来处理该问题:)明白了。我错过了那部分。事实上,如果真的需要将其与“现在”联系起来,那么您的解决方案会更好。我确实认为OP需要更仔细地考虑时区
UtcNow
可能是合适的依据,也可能是他们希望在当地时间或某个特定时区对日期进行解释。2月29日只有一个小问题。在99.5%的情况下,一个世纪相隔两年要么都是闰年,要么两者都不是。但举例来说,2000年是闰年,2100年将不是。事实上,这是正确的,我没有想到。因为我们在400年周期中处于如此早期的位置,几乎需要279年才会出现问题。(特别是——在2300年3月1日,有效字符串“02/29/00”表示2月29日2400,一个确实存在的日期,将无法解析,而不是返回2月29日2300,因为该日期不存在)欢迎使用Y2K3 bug。谢谢,我想当时必须有其他人来处理该问题:)明白了。我错过了那部分。事实上,如果真的需要将其与“现在”联系起来,那么您的解决方案会更好。我确实认为OP需要更仔细地考虑时区UtcNow
可能是合适的依据,也可能是他们希望在当地时间或某个特定时区对日期进行解释。