两个日期之间的天,小时,分钟,秒

Sac*_*nth 38 .net c# datetime

我有两个约会,一个比另一个少.我想创建一个像这样的字符串

"0天,0小时,23分钟,18秒"

代表两个日期之间的差异.我怎样才能获得这个字符串的这些元素?

Ale*_*kov 90

TimeSpan是您需要的对象:

TimeSpan span = (DateTime.Now - DateTime.Now);

String.Format("{0} days, {1} hours, {2} minutes, {3} seconds", 
    span.Days, span.Hours, span.Minutes, span.Seconds);
Run Code Online (Sandbox Code Playgroud)


bdu*_*kes 11

当你DateTime从另一个中减去一个时,你得到一个TimeSpan实例,它暴露了这些值.

TimeSpan diff = DateTime.Now - DateTime.Today;
string formatted = string.Format(
                       CultureInfo.CurrentCulture, 
                       "{0} days, {1} hours, {2} minutes, {3} seconds", 
                       diff.Days, 
                       diff.Hours, 
                       diff.Minutes, 
                       diff.Seconds);
Run Code Online (Sandbox Code Playgroud)


Mar*_*ett 6

使用TimeSpan类,您将在减去日期时获得该类。

您可以使用标准自定义格式字符串格式化输出。

“0 天 0 小时 23 分 18 秒”

可以有类似的东西:

TimeSpan ts = DateTime.Now - DateTime.Today;
Console.WriteLine(
   string.Format("{0:%d} days, {0:%h} hours, {0:%m} minutes, {0:%s} seconds", ts)
);
Run Code Online (Sandbox Code Playgroud)

IMO,它更干净,更易于使用,string.Format而不必转义格式字符串中的单词(如果您刚刚使用,则需要.ToString)或手动构建它。


Sha*_*awn 5

使用时间跨度

DateTime startTime = DateTime.Now;

DateTime endTime = DateTime.Now.AddSeconds( 75 );

TimeSpan span = endTime.Subtract ( startTime );
Console.WriteLine( "Time Difference (seconds): " + span.Seconds );
Console.WriteLine( "Time Difference (minutes): " + span.Minutes );
Console.WriteLine( "Time Difference (hours): " + span.Hours );
Console.WriteLine( "Time Difference (days): " + span.Days );

String yourString = string.Format("{0} days, {1} hours, {2} minues, {3} seconds",
    span.Days, span.Hours, span.Minutes, span.Seconds);
Run Code Online (Sandbox Code Playgroud)