Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何转换;年月日;是否将字符串设置为具有最近未来年份的日期?_C#_.net 5_Datetimeoffset - Fatal编程技术网

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
可能是合适的依据,也可能是他们希望在当地时间或某个特定时区对日期进行解释。