C#TimeSpan两天相同的时间跨度?

时间:2011-09-28 18:00:00

标签: asp.net datetime c#-4.0 timespan

所以我有一种情况需要在特定日期触发某些事件,我以为我会使用TimeSpan来获取特定日期,这里的想法是TimeSpan.Days == 0我触发我的事件,如果它少于或大于0然后什么都不做...... 但我认为这会有效,但两天给我0 这就是我在做的事情。

TimeSpan timeSpanDays = DateTime.Parse("12/13/2011").Subtract(DateTime.Now.AddDays(76));
TimeSpan timeSpanDays1 = DateTime.Parse("12/14/2011").Subtract(DateTime.Now.AddDays(76));

TimeSpan timeSpanMonths = DateTime.Parse("2011-11-28").Subtract(DateTime.Now.AddMonths(2));
TimeSpan timeSpanMonths1 = DateTime.Parse("2011-11-29").Subtract(DateTime.Now.AddMonths(2));

Console.WriteLine("14 days after issuance: {0}",timeSpanDays.Days);
Console.WriteLine("14 days after issuance: {0}",timeSpanDays1.Days);
Console.WriteLine("\r\n");
Console.WriteLine("22 months after issuance: {0}",timeSpanMonths.Days);
Console.WriteLine("22 months after issuance: {0}",timeSpanMonths1.Days);
Console.WriteLine("\r\n");
Console.WriteLine("TESTING DATE {0}",DateTime.Now.AddMonths(2));

这是结果

  

发布后14天:0

     

发布后14天:0

     

发布后22个月:0

     

发布后22个月:0

     

测试日期11/28/2011 10:55:43 AM

这是因为我没有在DateTime上剥离时间。现在? 任何帮助或指示将不胜感激。

感谢!!!

2 个答案:

答案 0 :(得分:2)

你误解我认为Days属性是什么。我想你想要的是TotalDays

答案 1 :(得分:1)

如果您希望在两个DateTime之间获得总天数,则需要使用TimeSpan的TotalDays

TotalDays,TotalMinutes,TotalHours,TotalMilliseconds为您提供时间跨度之间的总时间。

另一方面,Days,Minutes,Hours和Milliseconds为您提供实例的当前组件。

因此,您需要更改示例以使用Total方法。

TimeSpan timeSpanDays = DateTime.Parse("12/13/2011").Subtract(DateTime.Now.AddDays(76));
TimeSpan timeSpanDays1 = DateTime.Parse("12/14/2011").Subtract(DateTime.Now.AddDays(76));

TimeSpan timeSpanMonths = DateTime.Parse("2011-11-28").Subtract(DateTime.Now.AddMonths(2));
TimeSpan timeSpanMonths1 = DateTime.Parse("2011-11-29").Subtract(DateTime.Now.AddMonths(2));

Console.WriteLine("14 days after issuance: {0}",timeSpanDays.TotalDays);
Console.WriteLine("14 days after issuance: {0}",timeSpanDays1.TotalDays);
Console.WriteLine("\r\n");
Console.WriteLine("22 months after issuance: {0}",timeSpanMonths.TotalDays);
Console.WriteLine("22 months after issuance: {0}",timeSpanMonths1.TotalDays);
Console.WriteLine("\r\n");
Console.WriteLine("TESTING DATE {0}",DateTime.Now.AddMonths(2));