2014-04-12 101 views
3

將秒轉換爲(年:月:日時:分:秒)的最佳方式是什麼?假設我有959040000秒(1年5個月),那麼.NET中是否有任何專門的類/技術可以讓我將這些959040000秒轉​​換爲(年:月:日小時:分鐘:秒)到DateTime或什麼的?如何將秒轉換爲(年:月:日時:分:秒)?

+0

你想將它們添加到一個特定的日期?或創建一個時間跨度? – paqogomez

+0

我想轉換Year:Month:Day Hour:Minutes:Seconds。如:1年:5個月:0天00:00:00格式 – user3408674

+0

例如,如果拿Zdravko的答案,則必須自己將該串連接在一起。沒有什麼會自動爲你格式化它。 – paqogomez

回答

5

使用時間跨度類:

var ts = new TimeSpan(0, 0, 959040000); 
int days = ts.Days; 
int years = days/365; 
.... 
+0

你最好使用'TimeSpan.FromSeconds'工廠方法。 http://msdn.microsoft.com/en-us/library/system.timespan.fromseconds.aspx –

+0

'TimeSpan'中沒有'年'屬性' –

+0

TimeSpan不提供月份和年份 – user3408674

2

說實話,你不能因爲它依賴於開始日期即30天可以作爲1個月1天或1個月2天,或更低如果是閏年,那麼比一個月或365天將少於一年。

但是,你可以使用:

TimeSpan diff = TimeSpan.FromSeconds(959040000); 
string formatted = string.Format(
     CultureInfo.CurrentCulture, 
     "{0} years, {1} months, {2} days, {3} hours, {4} minutes, {5} seconds", 
     diff.Days/365, 
     (diff.Days - (diff.Days/365) * 365)/30, 
     (diff.Days - (diff.Days/365) * 365) - ((diff.Days - (diff.Days/365) * 365)/30)*30, 
     diff.Hours, 
     diff.Minutes, 
     diff.Seconds); 

Console.WriteLine(formatted); 

輸出是:

30,5,0,0,0,0

如果輸入856044326輸出將成爲:

27,1,22,2 2,5,26

+0

我認爲:TimeSpan diff = TimeSpan.FromSeconds(9590450425); – user3408674

+0

@ user3408674是的,它是一樣的。我改變了我的代碼,因爲使用'FromSeconds'更合適。 –

-1

這裏是另一個伎倆..你也可以使用的時間跨度

DateTime date, date2; 
      date = date2 = DateTime.Now; 
      date2= date2.AddSeconds(959040000); 
      var totaldays = (date2 - date).TotalDays; 
      var totalHours = (date2 - date).TotalHours; 
      var Totalmin = (date2 - date).TotalMinutes; 
      var years = totaldays/365; 
相關問題