如何使用c#从当前日期中减去上一个日期

时间:2013-02-08 09:09:07

标签: c#

我想从当前日期中减去上一个日期。上一个日期可能是2个月和15天或1年9个月和10天......像这样等...所以请问我怎样才能用C#编写Coding。非常感谢。

6 个答案:

答案 0 :(得分:3)

使用TimeSpan的任何答案都能为您提供“2个月和15天” - 因为一个月的长度会随着时间的推移而变化。

使用基类库执行此操作很痛苦......这是我启动Noda Time项目的原因之一。在其他功能中,它允许您确定日期之间的Period(或日期和时间等)。

例如,让我们看看我在Stack Overflow上的时间:

LocalDate today = new LocalDate(2013, 2, 8);
LocalDate start = new LocalDate(2008, 9, 26);
// This defaults to using year, month, day units. You can specify alternatives.
Period period = Period.Between(start, today);

Console.WriteLine("{0} years; {1} months; {2} days",
                  period.Years, period.Months, period.Days);

输出:

4 years; 4 months; 13 days

或者如果实际想从日期中减去一段时间(问题不是很清楚),你也可以这样做:

Period period = new PeriodBuilder { Years = 4, Months = 4, Days = 13 }.Build();
LocalDate today = new LocalDate(2013, 2, 8);
LocalDate start = today - period;
Console.WriteLine(start);

输出:

25 September 2008

请注意,由于somewhat crazy nature of date/time arithmetic,此不会给出9月26日。如果你添加这段时间到9月26日你今天就会得到......但这不是一回事。将此视为一个警告,您需要真正小心地描述您想要实现的目标:)

的第二方可以很容易地使用BCL:

DateTime today = new DateTime(2013, 2, 8);
DateTime start = today.PlusYears(-4).PlusMonths(-4).PlusDays(-13);

虽然没有BCL类型来表示“年,月,日”的价值。

答案 1 :(得分:2)

你的问题有点令人困惑。是否要从另一个日期中减去一个日期,或者是否要从日期中减去一段时间。

<强> 1。从另一个日期减去一个日期:

DateTime previousDate = new DateTime(1990, 12, 12);
DateTime currentDate = DateTime.UtcNow;
TimeSpan difference = currentDate - previousDate;

然后,您可以使用TimeSpan方法根据需要在不同的时间单位中获得差异。

以下是有关TimeSpan的更多信息:http://msdn.microsoft.com/en-us/library/system.timespan.aspx

<强> 2。从日期减去一段时间

DateTime currentDate = DateTime.UtcNow;
TimeSpan periodOfTime = new TimeSpan(12, 12, 0, 0);
DateTime newDate = currentDate - periodOfTime;

然而,你必须自己计算一个月的长度,如果这是你想要的。

答案 2 :(得分:0)

您可以使用DateTime.Subtract

文章中的例子:

System.DateTime date1 = new System.DateTime(1996, 6, 3, 22, 15, 0);
System.DateTime date2 = new System.DateTime(1996, 12, 6, 13, 2, 0);
System.DateTime date3 = new System.DateTime(1996, 10, 12, 8, 42, 0);

// diff1 gets 185 days, 14 hours, and 47 minutes.
System.TimeSpan diff1 = date2.Subtract(date1);

// date4 gets 4/9/1996 5:55:00 PM.
System.DateTime date4 = date3.Subtract(diff1);

// diff2 gets 55 days 4 hours and 20 minutes.
System.TimeSpan diff2 = date2 - date3;

// date5 gets 4/9/1996 5:55:00 PM.
System.DateTime date5 = date1 - diff2;

答案 3 :(得分:0)

TimeSpan timeSpan = new TimeSpan(2,2,0);
DateTime dateTime = DateTime.Now.Subtract(timeSpan);

答案 4 :(得分:0)

当你在C#中减去两个日期时,你会得到一个TimeSpan对象。 你可以访问它的不同属性来获得它代表的实际天数,小时数,分钟数等。

DateTime a;
DateTime b;

//assign some values

TimeSpan span = a.Subtract(b);
Console.WriteLine("Days: " + span.Days);

答案 5 :(得分:0)

以下情况应该如此。

TimeSpan diff = DateTime.Now - previousDate;