C# 如何以min:sec格式转换秒数
如何将秒转换为分钟:秒格式简单数学。60秒到1分钟C# 如何以min:sec格式转换秒数,c#,time,C#,Time,如何将秒转换为分钟:秒格式简单数学。60秒到1分钟 var seconds = 60; //10,000 ticks in a millisecond var ticks = seconds*10000*1000; DateTime dt = new DateTime(ticks); dt.ToString("mm:ss"); int mins = totalseconds/60; int secs = totalseconds % 60; Console.Writeline(string.
var seconds = 60;
//10,000 ticks in a millisecond
var ticks = seconds*10000*1000;
DateTime dt = new DateTime(ticks);
dt.ToString("mm:ss");
int mins = totalseconds/60;
int secs = totalseconds % 60;
Console.Writeline(string.Format("{0}:{1}", mins, secs));
大概是这样的:
string minSec = string.Format("{0}:{1:00}", seconds / 60, seconds % 60);
string minSec = string.Format("{0}:{1:00}", seconds / 60,
(Math.Abs(seconds)) % 60);
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);
请注意,这将确保秒始终显示为两位数字,例如“2:05”持续125秒。目前,会议记录的处理方式并不相同,但当然也可能如此
这不能很好地处理负数。如果您的秒数可能为负数,您可能需要以下内容:
string minSec = string.Format("{0}:{1:00}", seconds / 60, seconds % 60);
string minSec = string.Format("{0}:{1:00}", seconds / 60,
(Math.Abs(seconds)) % 60);
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);
最后,你总是有不到一小时的时间吗?例如,当你真正的意思是“1:20:00”时,看到“80:00”可能看起来很奇怪。一个通用的版本是使用
TimeSpan
如下:
string minSec = string.Format("{0}:{1:00}", seconds / 60, seconds % 60);
string minSec = string.Format("{0}:{1:00}", seconds / 60,
(Math.Abs(seconds)) % 60);
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开始工作)添加一个答案:
将秒显示为“2:05”的另一种方法是使用PadLeft
string time = minutes.ToString() + ":" + seconds.ToString().PadLeft(2,'0');
将给您:00:02:05
。据我所知,这个内置解决方案更具可扩展性,因为它也可以为您提供数小时的时间,而无需任何逻辑管道。什么适合我
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 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
这会将125秒的格式设置为“2:5”,而我认为2:05更合适。是的,字符串的格式没有为秒设置一个前导零,因此我会这样做:字符串时间=(totalSeconds/60)。ToString()+“:”+(totalSeconds%60)。ToString(“00”)+1表示
。FromSeconds
而不是像我一样使用构造函数。但是您的代码没有编译-没有.ToString
.AFAIK的重载,这个重载是在.NET 4:Ahh fair:)中添加的,但是另一个问题是它最多只显示59分钟。然而,我不知道这对拉梅什来说是否足够。说得好。看到拉梅什实际上选择了什么样的答案,我真的不认为他对格式有多在意:——)当有几个小时的时间时,它还能工作吗?3700秒是1小时1分钟40秒。它不会返回1:40而不是61:40吗?是的,它会处理小时、天和DateTime结构的每个成员。你自己试试看;)在代码中添加一些解释会使这个答案更好。十年后:这会在结果字符串中添加毫秒,这不是OP要求的。十年后:您可以使用TimeSpan.FromSeconds(seconds)。ToString(@“hh\:mm\:ss”)
以小时、分钟、秒的格式获取。如果还需要毫秒,可以使用.ToString(@“hh\:mm\:ss\:fff”)代码>