两个日期之间的天、小时、分钟、秒
本文关键字:小时 分钟 之间 两个 日期 | 更新日期: 2023-09-27 18:33:43
我有两个日期,一个比另一个少。 我想创建一个这样的字符串
"0 天 0 小时 23 分 18 秒"
表示两个日期之间的差异。 如何获取此字符串的这些元素?
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);
当你从一个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);
使用 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)
);
IMO,它更干净,更易于使用string.Format
而不必转义格式字符串中的单词(如果您只是使用.ToString
则需要)或手动构建它。
使用 TimeSpan
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);
不要忘记,如果您希望此计算可移植,则需要将其存储为 UTC,然后在显示时转换为本地时间。作为一般规则,将日期存储为 UTC 并转换为本地时间以进行演示。
你试过使用
TimeSpan()
那当然可以做你想做的事
这样的事情怎么样?
TimeSpan diff = dateTimeNew - dateTimeOld;
string output = string.Format("{0} days, {1} hours, {2} minues, {3} seconds", diff.Days, diff.Hours, diff.Minutes, diff.Seconds);
Console.WriteLine(output);
DateTime myDay = DateTime.Now;
DateTime otherDate = DateTime.Now.AddYears(1);
var test = otherDate.Subtract(myDay);
Console.WriteLine("Days:" + test.Days + "Hours:" + test.Hours +"Minutes" + test.Minutes +"Seconds" + test.Seconds);
这里的测试是时间戳的类型
TimeSpan diffTime = dateTimeNew -PreviousDate;
int days=diffTime.Days;
int hours=diffTime.Hours;
int minutes=diffTime.Minutes;
int seconds=diffTime.Seconds;