我希望得到一个代表C#一年的Timespan结构 .
棘手的是,一年是什么,取决于它的起点 .
你可以做
DateTime now = DateTime.Now; TimeSpan span = now.AddYears(1) - now;
从现在到一年之后,这将给你 1 year timespan
1 year timespan
这里的关键问题是:哪一年?
时间长度显然取决于您想要的年份是否是闰年以及何时开始 .
如果你想从今天开始一年,请使用@ sehe的答案 .
如果你想要今年的@Oyvind,
如果你想要一个合理的近似值,你可以使用@Nayan,或使用365.25近似值:
TimeSpan oneYearSpan = new TimeSpan(365, 6, 0, 0);
你不能,因为一年没有固定长度(365或366天或约365.25?) . 这就是为什么你不能像TimeSpan一样有一个月(28,29,30,31天?)
粗略的例子:
TimeSpan oneYearSpan = new TimeSpan(365, 0, 0, 0);
这会吗?
DateTime intialDate = Date.Now.Date; TimeSpan yearSpan = intialDate.AddYears(1).Subtract(intialDate)
正如其他人提到的那样,你可能想要考虑闰年 . 在这种情况下,您可以相应地启动intialDate .
如果你想要非常准确,你可以使用一年中纳秒的数量 . 我认为这每个世纪都会移动0.5秒,所以应该很长一段时间好!
public TimeSpan MyYear { get { // Year = 3.1556926 × 10^16 nanoseconds return new TimeSpan(31556926000000000); } }
这个页面上已有一些很好的答案,这只是另一种选择 .
这取决于你想要代表哪一年,因为并非所有年份的长度相等 .
这是查找2010年长度的方法,例如:
var timestamp = new DateTime(2011, 1, 1) - new DateTime(2010, 1, 1);
更改 DateTimes 中的年份以查找所需年份的长度 .
DateTimes
这是如何做到这一点,利用IsLeapYear来阻止一天的数量 .
int span = DateTime.IsLeapYear(1996) ? 366: 365; var year1996 = new TimeSpan(span, 0, 0, 0);
8 回答
棘手的是,一年是什么,取决于它的起点 .
你可以做
从现在到一年之后,这将给你
1 year timespan
这里的关键问题是:哪一年?
时间长度显然取决于您想要的年份是否是闰年以及何时开始 .
如果你想从今天开始一年,请使用@ sehe的答案 .
如果你想要今年的@Oyvind,
如果你想要一个合理的近似值,你可以使用@Nayan,或使用365.25近似值:
你不能,因为一年没有固定长度(365或366天或约365.25?) . 这就是为什么你不能像TimeSpan一样有一个月(28,29,30,31天?)
粗略的例子:
这会吗?
正如其他人提到的那样,你可能想要考虑闰年 . 在这种情况下,您可以相应地启动intialDate .
如果你想要非常准确,你可以使用一年中纳秒的数量 . 我认为这每个世纪都会移动0.5秒,所以应该很长一段时间好!
这个页面上已有一些很好的答案,这只是另一种选择 .
这取决于你想要代表哪一年,因为并非所有年份的长度相等 .
这是查找2010年长度的方法,例如:
更改
DateTimes
中的年份以查找所需年份的长度 .这是如何做到这一点,利用IsLeapYear来阻止一天的数量 .