我本来希望明天为新年派对写一个倒数计时器,但我似乎遇到了从彼此减去两个DateTimes的问题.
我的应用程序似乎在处理2015年1月的日期(第一种方法)时工作正常,但是当我越过2014/2015年度边界(第二种方法)时,它会给出奇怪的结果.
有任何想法吗?
private static readonly string MyDateFormat = "{0:" + string.Join("", (-1).ToString("x").Skip(1)) + "}";
public void disKoud()
{
var later = new DateTime(2015-01-01);
var now = new DateTime(2015-01-31);
var diff = (later - now);
Debug.WriteLine(MyDateFormat, diff); // 0000030
}
public void sonderNHoed()
{
var later = new DateTime(2015-01-01);
var now = new DateTime(2014-12-31);
var diff = (later - now);
Debug.WriteLine(MyDateFormat, diff); // 0000042 ??? WTF
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 16
你没有构建你认为自己的日期.这些线:
var later = new DateTime(2015-01-01);
var now = new DateTime(2014-12-31);
Run Code Online (Sandbox Code Playgroud)
相当于:
var later = new DateTime(2013);
var now = new DateTime(1972);
Run Code Online (Sandbox Code Playgroud)
毕竟,(2015 - 1) - 1是2013年,(2014 - 12) - 31是1972年.这只是简单的算术.
这些值都在公元0001年1月1日的第一秒内...因为你已经通过了多个滴答.
你的意思是:
var later = new DateTime(2015, 01, 01);
var now = new DateTime(2014, 12, 31);
Run Code Online (Sandbox Code Playgroud)
...将年,月和日作为单独的值传递给DateTime构造函数.