我想獲得代表C#中的一年的Timespan結構。如何獲得1年的Timespan?
回答
棘手的是,一年是多少,取決於它從哪裏開始。
你可以做
DateTime now = DateTime.Now;
TimeSpan span = now.AddYears(1) - now;
這將使您從當前時刻的1 year timespan
到一年後
DateTime intialDate = Date.Now.Date;
TimeSpan yearSpan = intialDate.AddYears(1).Subtract(intialDate)
至於其他peoplehave提到你可能要考慮閏年。在這種情況下,您可以相應地引入intialDate。
粗糙例如:
TimeSpan oneYearSpan = new TimeSpan(365, 0, 0, 0);
請問這個怎麼辦?
如果這是一個閏年? –
我知道! :)這就是爲什麼粗略的例子。我的投票是爲了sehe。 – Nayan
這取決於你想表示哪一年,因爲不是所有年份的長度都相等。
這是尋找2010的長度,例如方式:找到你想要的一年的長度
var timestamp = new DateTime(2011, 1, 1) - new DateTime(2010, 1, 1);
變化的一年中DateTimes
。
這裏的關鍵問題是:哪一年?
時間長度的長短明顯取決於你想要的年份是否是閏年,以及它是否開始。
如果你想從今天開始的一年去@ sehe的答案。
如果您想當年去與@Oyvind,
如果你想有一個合理的近似可以用@Nayan去,或者爲365.25近似使用:
TimeSpan oneYearSpan = new TimeSpan(365, 6, 0, 0);
這裏的怎麼辦這一點,利用IsLeapYear來確定一天的數量。
int span = DateTime.IsLeapYear(1996) ? 366: 365;
var year1996 = new TimeSpan(span, 0, 0, 0);
並非每一次持續時間在1月1日開始持續。不要這樣做。 – oerkelens
如果你想要相當準確,你可以使用一年中納秒的數量。 我覺得這個每百年運動0.5秒,所以應該好久好久!
public TimeSpan MyYear
{
get
{
// Year = 3.1556926 × 10^16 nanoseconds
return new TimeSpan(31556926000000000);
}
}
已經有這個頁面上一些很好的答案,這只是另一種選擇。
而在閏年中,你可以休息一整天,避開人們期望的東西。不是上帝的主意。 – oerkelens
- 1. 如何獲得日期 - 1年vba
- 2. Oracle日期 - 獲得給定年份的1月1日
- 3. 如何獲得更好的TimeSpan對象輸出?
- 4. 如何獲得 '\ X01' 1
- 5. 如何獲得1個JFrame?
- 6. 如何串獲得「STS」:1" 獲得價值1
- 7. 如何在兩分鐘內獲得TimeSpan分鐘?
- 8. 如何獲得前一年的總金額與明年總
- 9. 如何獲得單月和今年postgre
- 10. 如何從日期獲得年份
- 11. 如何在sqlite中獲得前一年
- 12. 如何獲得年月日起
- 13. 如何獲得當年有多少天?
- 14. 如何在PostgreSQL中獲得年齡
- 15. 如何使用JodaTime獲得Julian年份?
- 16. 如何獲得比上月和去年
- 17. 如何保持閏年,減少1年
- 18. Javascript獲得閏年
- 19. 獲得本年度
- 20. 如何獲得IndexedDB的前1行
- 21. 獲取明年1月1日
- 22. 如何獲得特定年份的週數?另外如何使用zend獲得當前年份?
- 23. 如何獲得第一日期(月,季度,半年度,年度)
- 24. 獲得2012年的SQL Server
- 25. 獲得WeekdayName + 1
- 26. 使用NSDateIntervalFormatter(或類似),以獲得「1年2個月」
- 27. 如何獲得多行,當值> 1
- 28. 如何獲得總共1次多行
- 29. 如何從1點獲得X和Y?
- 30. 如何使用grep獲得匹配[1]?
[TimeSpan](http://msdn.microsoft.com/en-us/library/system.timespan.aspx)是一個結構,而不是一個對象:-) –
閏年,正常年份或平均年份? –
這個問題引發了一個很好的討論+1 – Matt