【发布时间】:2011-04-09 13:32:49
【问题描述】:
如何将秒转换为 Minute:Second 格式
【问题讨论】:
如何将秒转换为 Minute:Second 格式
【问题讨论】:
一个通用的版本是像这样使用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);
【讨论】:
int totalSeconds = 222;
int seconds = totalSeconds % 60;
int minutes = totalSeconds / 60;
string time = minutes + ":" + seconds;
【讨论】:
为了完整起见,我将使用 TimeSpan 添加答案(从 .NET 4.0 开始工作):
int seconds = 1045;
var timespan = TimeSpan.FromSeconds(seconds);
Console.WriteLine(timespan.ToString(@"mm\:ss"));
【讨论】:
.FromSeconds 而不是像我这样使用构造函数。但是您的代码无法编译 - .ToString 没有重载。
类似这样的:
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”可能看起来很奇怪。
【讨论】:
double seconds=125;
TimeSpan.FromSeconds(seconds).ToString()
会给你:00:02:05。据我了解,此内置解决方案更具可扩展性,因为它也可以为您提供数小时的时间,而无需任何逻辑管道。
【讨论】:
TimeSpan.FromSeconds(seconds).ToString(@"hh\:mm\:ss") 获取小时、分钟、秒格式。如果你也想要 mSec,你可以使用.ToString(@"hh\:mm\:ss\:fff");
var seconds = 60;
//10,000 ticks in a millisecond
var ticks = seconds*10000*1000;
DateTime dt = new DateTime(ticks);
dt.ToString("mm:ss");
【讨论】:
简单的数学。 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');
【讨论】:
不严格回答最初的问题,但如果将来有人(或我自己)从谷歌来这里也想用毫秒格式化浮点数:
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
【讨论】:
什么对我有用...
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");
}
【讨论】:
如果你需要它作为浮点数或双精度:
float seconds = 339;
float totalTimeInMins = (float) (Math.Floor(seconds / 60) + (seconds % 60) / 100);
【讨论】: