我是c#的新手并使用Windows窗体。此代码的结果是:01:38:07.0093844
。任何人都知道如何从结果中删除毫秒部分(0093844)(ts)我希望结果如下所示:01:38:07
(H:mm:ss)没有毫秒。
请帮忙。谢谢你
string OldDateTime = "2016-03-02 13:00:00.597"; //old DateTime
DateTime CurrentDateTime = DateTime.Now;
TimeSpan ts = CurrentDateTime.Subtract(Convert.ToDateTime(OldDateTime)); //Difference
//result of ts = 01:38:07.0093844
答案 0 :(得分:10)
创建扩展方法:
public static class TimeExtensions
{
public static TimeSpan StripMilliseconds(this TimeSpan time)
{
return new TimeSpan(time.Days, time.Hours, time.Minutes, time.Seconds);
}
}
用法:
string OldDateTime = "2016-03-02 13:00:00.597"; //old DateTime
DateTime CurrentDateTime = DateTime.Now;
TimeSpan ts = CurrentDateTime.Subtract(Convert.ToDateTime(OldDateTime)).StripMilliseconds();
要在没有毫秒的情况下格式化(制作成字符串),请使用:
string OldDateTime = "2016-03-02 13:00:00.597"; //old DateTime
DateTime CurrentDateTime = DateTime.Now;
TimeSpan ts = CurrentDateTime.Subtract(Convert.ToDateTime(OldDateTime));
string formatted = ts.ToString(@"dd\.hh\:mm\:ss");
答案 1 :(得分:3)
对象包含的内容和屏幕上的内容是不同的问题,请勿混合使用2.如果您希望在屏幕上将其格式化为小时,分钟,秒,请使用ToString()
并将其包含在您的屏幕中格式。示例:
var forScreen = ts.ToString("hh:mm:ss");
查看MSDN Custom TimeSpan Format Strings上提供的所有格式选项。
修改
如上所述,你可以随心所欲地做到这一点。以下是ToString的一个示例,它构建了一个人类可读的字符串。这些格式化程序用于构建可以显示的字符串,因此您无需实际更改基础数据。这是你的演示逻辑。
dif.ToString("'Elapsed: 'dd' days, 'hh' hours, 'mm' minutes and 'ss' seconds'")
答案 2 :(得分:1)
您可以按如下方式格式化时间:
string NewDateTime = ts.ToString("yyyy-MM-dd hh:mm:ss");
答案 3 :(得分:1)
你可以通过一个除法和乘以每秒刻度的数量来实现:
ts = new TimeSpan(ts.Ticks / TimeSpan.TicksPerSecond * TimeSpan.TicksPerSecond);
TimeSpan
内部只是"简单地"一些Ticks
。通过整数除法和整数乘法,你可以'#34; round"它们。