Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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应用程序中日期之间的比较_C#_.net_Date_Datetime_Compare - Fatal编程技术网

C# C应用程序中日期之间的比较

C# C应用程序中日期之间的比较,c#,.net,date,datetime,compare,C#,.net,Date,Datetime,Compare,我有一个asp.net应用程序,其中有以下三个日期: 现在=08-10-13 15:56:19 凝血1=01-10-13 00:00:00 凝血2=01-01-50 00:00:00 日期格式为DD-MM-YY HH:MM:SS。问题是函数DateTime.Compare给出了相同的结果,即 DateTime.Comparenow,cloture1>0和DateTime.Comparenow,cloture2>0 那么这个问题的原因是什么呢?如何修复我的代码片段?问题在于您的程序很可能将clot

我有一个asp.net应用程序,其中有以下三个日期:

现在=08-10-13 15:56:19

凝血1=01-10-13 00:00:00

凝血2=01-01-50 00:00:00

日期格式为DD-MM-YY HH:MM:SS。问题是函数DateTime.Compare给出了相同的结果,即

DateTime.Comparenow,cloture1>0和DateTime.Comparenow,cloture2>0


那么这个问题的原因是什么呢?如何修复我的代码片段?

问题在于您的程序很可能将cloture2解释为1950年,而不是2050年。 由于您尚未发布设置cloture2的代码,因此我无法提供具体的解决方案,但我能提供的最好方法是在代码中明确使用01-10-2050。

如果现在晚于cloture1,则返回值将为1或大于零

参考MSDN中有关DateTime.Compare方法的文章,您随示例日期一起提供的代码似乎运行良好

有关日期时间的详细信息,请查看以下链接。比较方法:

如果您认为您的代码仍然不正确,请详细说明您的问题。

来自

在解析操作中,使用yy解析的两位数年份 自定义格式说明符是基于 格式提供程序当前版本的Calendar.TwoDigitYearMax属性 日历

在解析操作中,使用yy解析的两位数年份 自定义格式说明符是基于 格式提供程序当前版本的Calendar.TwoDigitYearMax属性 日历下面的示例分析 使用默认公历的两位数年份的日期 美国的文化

此属性允许将2位数的年份正确转换为 四位数年份。例如,如果此属性设置为2029,则 100年的范围是从1930年到2029年。因此,一个2位数的值为30 被解释为1930,而2位值29被解释为 2029年

您的应用程序应将该值设置为99,以指示该2位数字 年是按字面意思计算的。例如,如果设置了此属性 从0到99,100年的范围是从0到99。对于大多数情况,这不是一个有效的值 日历到99。因此,2位值30被解释为 三十

即使在反编译GregorianCalendar.TwoDigitYearMax属性时,也可以看到您自己

public override int TwoDigitYearMax
{
  get
  {
    if (this.twoDigitYearMax == -1)
      this.twoDigitYearMax = Calendar.GetSystemTwoDigitYearSetting(this.ID, 2029);
    return this.twoDigitYearMax;
  }
这是完全正确的。我还想指出你的格式部分

您不能使用YYYY格式设置两位数年份的格式。您需要使用yy格式,它允许两位数的格式

DateTime dt = DateTime.ParseExact("01-01-50 00:00:00", "dd-MM-yy HH:mm:ss", CultureInfo.InvariantCulture);
印刷品

01.01.1950 00:00:00
这里有一个


查看更多信息,从

现在开始,将始终大于这两个。我错过什么了吗?没有为什么??看看日期format@neoistheone,cloture2在2050年,如果我读得正确的话。@Bolucpapucouglu,我很确定50被解释为1950年。>日期的格式是DD-MM-YYYY HH:MM:SS是08-10-13 15:56:19,例如,有一个4位数的年份?同意,您使用的是日期时间格式DD-MM-YYYYY,但你只是在年月日通过。还记得所有关于千年虫的宣传吗?这是因为人们用YY而不是YYYY来表示日期。为什么50被解释为1950年,而13被解释为2013年?请看一看和。有一个属性决定哪个两位数年份是2000,哪个是1900