我是c#新手,也是使用windows窗体的新手。这段代码的结果是:01:38:07.0093844。有人知道如何从结果(ts)中删除毫秒部分(0093844)吗?我希望结果看起来像这样:没有毫秒的01:38:07 (H:mm:ss)。
请帮助.Thank你
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发布于 2016-03-02 22:55:46
创建一个扩展方法:
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();要格式化(make To A string)而不使用毫秒,请使用以下命令:
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");发布于 2016-03-02 22:59:03
对象包含的内容和您想要在屏幕上显示的内容是两个不同的问题,请不要将两者混为一谈。如果您希望在屏幕上将其格式化为小时、分钟、秒,则使用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'")发布于 2016-03-02 22:58:44
您可以通过每秒的刻度数对除法和乘法进行舍入:
ts = new TimeSpan(ts.Ticks / TimeSpan.TicksPerSecond * TimeSpan.TicksPerSecond);在内部,一个TimeSpan“简单地”就是一些Ticks。通过进行整数除法和整数乘法,您可以对它们进行“舍入”。
https://stackoverflow.com/questions/35750599
复制相似问题