Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以min:sec格式转换秒数_C#_Time - Fatal编程技术网

C# 如何以min:sec格式转换秒数

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.

如何将秒转换为分钟:秒格式

简单数学。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.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”)