2016-04-21 27 views
-1

我的任务是从固定日期中减去当前日期时获取天数。C#中的日期减法

<script language="C#" runat="server"> 
    System.DateTime thisDay = DateTime.Today; 
    System.DateTime dateCountFrom = new DateTime(2016, 6, 1, 0, 00, 00); 
</script> 

所以我有2个日期,一切工作都很完美。但是我怎么能从另一个中减去一个呢?

(dateCountFrom-thisDay).totaldayscount; 

导致错误,尝试其他方式 - 相同的结果。

我成功只有这样:

<%= ((DateTime.Now-(new DateTime(2016,6,1))) *-1).TotalDays %> 

但我需要EVAL结果和乘以-1。

任何想法,我可以做到这一点?

+0

[计算两个日期之间的差异(天数)?](http://stackoverflow.com/questions/1607336/calculate-difference-between-two-dates-number-of-days) – raidensan

+0

商店'(DateTime.Today-new DateTime(2016,6,1).TotalDays'在一个变量中的结果乘以-1 –

+0

“出错”,您需要告诉我们您得到了哪个错误。'totaldayscount'不是'TimeSpan'的成员,但最有可能的是编译器所抱怨的是'-1',之后再做:' - (DateTime.Now - new DateTime(2016,6,1)) .TotalDays',*或*,因为' - (ab)= ba'你可以这样做:'new DateTime(2016,6,1) - DateTime.Now'。 –

回答

0

您应该使用DateTime.Subtract方法,这会在第一时间返回包含差的时间跨度变量日期

TimeSpan diff = dateCountFrom.Subtract(DateTime.Now); 
diff = TimeSpan.FromTicks(diff.Ticks * -1); 

取而代之的是,虽然之间,如果你想让它乘以-1,你可以只是做相反的总和

TimeSpan diff = DateTime.Now.Subtract(dateCountFrom); 
+0

用'-'运算符对'DateTime'进行抽象描述是完全合法的,并且还会导致时间跨度 – derpirscher

+0

@derpirscher while这是真的,我喜欢Subtract,它只是另一种选择:) –

0

(thisDay - dateCountFrom).TotalDays(dateCountFrom-thisDay).TotalDays都是完全合法的,并不会导致错误。唯一的区别是一个结果是负面的,另一个是正面的。

如果您只需要几天的两个日期之间,这个数字无论是哪一个版本,你可以使用

int days = Math.Abs((thisDay - dateCountFrom).TotalDays) 

如果你知道,其中一个日期,将永远是以后再另一种(例如dateCountFrom将始终在未来)将此用作被减数(即从中减去的日期),并将另一个用作减数(即减去的日期)。那么天数也总是正面的。

+0

至于我我得到 CS0117:'System.Math'插入 Cove

+0

啊对不起,错字,它''Math.Abs​​()'会更新 – derpirscher