如何获得1年的Timespan?

时间:2011-12-02 11:07:51

标签: c# timespan

我希望得到一个Timespan结构,代表C#中的一年。

8 个答案:

答案 0 :(得分:41)

棘手的是,一年是什么,取决于它的起点。

你可以做到

DateTime now = DateTime.Now;
TimeSpan span = now.AddYears(1) - now;

这会从当前时刻到一年后给你1 year timespan

答案 1 :(得分:2)

这里的关键问题是:哪一年?

时间长度显然取决于您想要的年份是否是闰年以及何时开始。

如果你想从今天开始一年,请使用@ sehe的答案。

如果您希望今年使用@Oyvind,

如果你想要一个合理的近似值,你可以使用@Nayan,或使用365.25近似值:

TimeSpan oneYearSpan = new TimeSpan(365, 6, 0, 0);

答案 2 :(得分:1)

你不能,因为一年没有固定的长度(365或366天或约365.25?)。这也是为什么你不能有一个月的TimeSpan(28,29,30,31天??)

答案 3 :(得分:1)

DateTime intialDate = Date.Now.Date;
TimeSpan yearSpan = intialDate.AddYears(1).Subtract(intialDate)

正如其他人提到的,你可能想要考虑闰年。在这种情况下,您可以相应地启动初始日期。

答案 4 :(得分:1)

粗略的例子:

TimeSpan oneYearSpan = new TimeSpan(365, 0, 0, 0);

这会吗?

答案 5 :(得分:1)

如果你想要非常准确,你可以使用一年中纳秒的数量。 我认为这每个世纪都会移动0.5秒,所以应该很长一段时间好!

public TimeSpan MyYear
{
    get
    { 
        // Year = 3.1556926 × 10^16 nanoseconds
        return new TimeSpan(31556926000000000);
    }
}

此页面上已有一些很好的答案,这只是另一种选择。

答案 6 :(得分:0)

这取决于您想要代表哪一年,因为并非所有年份的长度相等。

这是查找2010年长度的方法,例如:

var timestamp = new DateTime(2011, 1, 1) - new DateTime(2010, 1, 1);

更改DateTimes中的年份以查找所需年份的长度。

答案 7 :(得分:0)

以下是如何执行此操作,利用IsLeapYear确定当天的数量。

int span = DateTime.IsLeapYear(1996) ? 366: 365;
var year1996 = new TimeSpan(span, 0, 0, 0);