Ответ 1
int totalSeconds = 222;
int seconds = totalSeconds % 60;
int minutes = totalSeconds / 60;
string time = minutes + ":" + seconds;
как конвертировать секунды в минуту: второй формат
int totalSeconds = 222;
int seconds = totalSeconds % 60;
int minutes = totalSeconds / 60;
string time = minutes + ":" + seconds;
Универсальная версия должна использовать 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);
Только для полноты я добавлю ответ, используя TimeSpan
(работает с .NET 4.0):
int seconds = 1045;
var timespan = TimeSpan.FromSeconds(seconds);
Console.WriteLine(timespan.ToString(@"mm\:ss"));
Что-то вроде этого:
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);
Наконец, у вас всегда будет меньше часа? Может показаться странным видеть "80:00", если вы действительно имеете в виду "1:20:00", например.
double seconds=125;
TimeSpan.FromSeconds(seconds).ToString()
предоставит вам: 00:02:05
. По моему мнению, это встроенное решение более расширяемо, так как оно может дать вам часы, без какой-либо логики.
Простая математика. От 60 секунд до минуты.
int mins = totalseconds/60;
int secs = totalseconds % 60;
Console.Writeline(string.Format("{0}:{1}", mins, secs));
Альтернативный способ отображения секунд, например. "2:05" может быть использование PadLeft.
string time = minutes.ToString() + ":" + seconds.ToString().PadLeft(2,'0');
var seconds = 60;
//10,000 ticks in a millisecond
var ticks = seconds*10000*1000;
DateTime dt = new DateTime(ticks);
dt.ToString("mm:ss");
Что работает для меня...
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");
}
Непосредственно отвечать на исходный вопрос, но в случае, если кто-то (или я) в будущем придет сюда из Google, желающего форматировать float с миллисекундами:
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