2010-09-08 96 views

回答

23
int totalSeconds = 222; 
int seconds = totalSeconds % 60; 
int minutes = totalSeconds/60; 
string time = minutes + ":" + seconds; 
+8

這將格式125秒爲「2:5」,而我懷疑* 2:05會更合適。 – 2010-09-08 06:15:43

+1

是的,這個字符串沒有被格式化以給出單個數字的前導零,所以我會這樣做:string time =(totalSeconds/60).ToString()+「:」+(totalSeconds%60)的ToString( 「00」); – 2017-08-09 18:09:53

1
var seconds = 60; 
//10,000 ticks in a millisecond 
var ticks = seconds*10000*1000; 
DateTime dt = new DateTime(ticks); 
dt.ToString("mm:ss"); 
+0

它仍然可以工作的時候會有個小時?例如。 3700秒是1小時1分40秒。它不會回到1:40而不是61:40嗎? – 2010-09-08 06:36:33

+0

是的,它可以使用DateTime結構的小時,天和每個成員。嘗試一下;) – 2010-09-08 13:16:49

+0

添加一些解釋和代碼將使這個答案更好。 – Thom 2014-04-29 11:42:20

2

簡單數學。 60秒到一分鐘。

int mins = totalseconds/60; 
int secs = totalseconds % 60; 

Console.Writeline(string.Format("{0}:{1}", mins, secs)); 
6

事情是這樣的:

string minSec = string.Format("{0}:{1:00}", seconds/60, seconds % 60); 

需要注意的是,這將確保秒總是顯示爲兩位數,例如「2:05」持續125秒。目前這些會議記錄不是以同樣的方式處理,但當然可以。

這不能很好地處理負數。如果你的秒數可能是負數,你可能想要這樣的東西:

string minSec = string.Format("{0}:{1:00}", seconds/60, 
           (Math.Abs(seconds)) % 60); 

最後,你會一直有不到一個小時的時間?例如,當您確實表示「1:20:00」時,看到「80:00」可能看起來很奇怪。

35

多才多藝的版本是使用TimeSpan這樣的:

var span = new TimeSpan(0, 0, seconds); //Or TimeSpan.FromSeconds(seconds); (see Jakob C´s answer) 
var yourStr = string.Format("{0}:{1:00}", 
          (int)span.TotalMinutes, 
          span.Seconds); 
15

只是爲了完整性,我會添加使用TimeSpan一個答案(作爲工作的.NET 4.0):

int seconds = 1045; 
var timespan = TimeSpan.FromSeconds(seconds);    
Console.WriteLine(timespan.ToString(@"mm\:ss")); 
+0

對於'.FromSeconds'而不是像我這樣的構造函數。但是你的代碼不會編譯 - 不會重載'.ToString'。 – 2010-09-08 06:20:58

+0

AFAIK,這個超載是在.NET 4中添加的:http://msdn.microsoft.com/en-us/library/dd992632.aspx – 2010-09-08 06:29:35

+1

Ahh fair :)但另一個問題是它只會顯示59分鐘。但是,我不知道這對Ramesh來說是否足夠。 – 2010-09-08 06:41:31

2

的另一種方式將秒顯示爲例如「2:05」可以使用PadLeft。

string time = minutes.ToString() + ":" + seconds.ToString().PadLeft(2,'0'); 
4
double seconds=125;  
TimeSpan.FromSeconds(seconds).ToString() 

會給你:00:02:05。根據我的理解,這種內置的解決方案更具可擴展性,因爲它可以給你幾個小時,而不需要任何邏輯管道。

0

什麼對我的作品...

public static string SecondsToMinutes(int seconds) 
{ 
    var ts = new TimeSpan(0, 0, seconds);     
    return new DateTime(ts.Ticks).ToString(seconds >= 3600 ? "hh:mm:ss" : "mm:ss"); 
} 
0

沒有嚴格的回答原來的問題,但如果任何人(或自己)在未來來到這裏,從谷歌希望與格式毫秒的浮動,以及:

float secs = 23.69; 
string m_ss_mmm = string.Format("{0}:{1:00}.{2:000}", (int)secs/60, (int)(secs % 60), (secs - ((int)secs)) * 1000); 

結果:

0:23.690