12AM和6AM之间减少的负面结果

时间:2019-01-06 23:47:33

标签: c#

我尝试进行2天归约,以找出分钟内的差异。

这是我的代码

DateTime expDate = DateTime.ParseExact(stringExpDate, "yyyy-MM-dd",
                                 System.Globalization.CultureInfo.InvariantCulture);


                    Console.WriteLine("date now:" + DateTime.Now);
                    Console.WriteLine("date exp:" + expDate);


                    TimeSpan expCount = expDate - DateTime.Now;
                    var expMinute = (int)expCount.TotalMinutes;
                    // var expMinute = expDate.Subtract(DateTime.Now).TotalMinutes;//got the same results as above

                    Console.WriteLine("exp count:" + expCount);
                    Console.WriteLine("exp min:" + expMinute);

我得到的结果

现在日期:2019/1/7 6:31:32

日期exp:1/7/2019 12:00:00 AM

exp计数:-06:31:32.5165326

exp分钟:-391

为什么产生负值? 不应该是积极的吗?

3 个答案:

答案 0 :(得分:0)

您的实验日期小于(早于)现在,因此将产生负面结果。改为使用await

日期就像数字,如果今天是6,昨天将是5,明天将是7。将它们相减遵循相似的数学规则。昨天减去今天是负数。今天减去昨天是积极的。

一个简单的日期系统是unix。自1970年1月1日以来经过的秒数。在这里您可以看到它们一直在计数,明天的时间将大于今天的时间,等等。这种数字内部表示的概念,尤其是日期时间表示为“自某个时间点以来的间隔数”经常在各种软件中使用;要记住和利用的东西之一。

答案 1 :(得分:0)

json大于过去的日期(msdn),因此您必须输入:

DateTime.Now

Try it online!

答案 2 :(得分:0)

TimeSpan expCount = expDate - DateTime.Now;  

expDate是午夜。 Now是同一天的6小时。因此,从较小的值减去较大的值时的差值为负。

您可以这样获得预期的结果:

TimeSpan expCount = DateTime.Now - expDate;  

或类似这样:

TimeSpan expCount = (expDate - DateTime.Now).Duration;