是否有更优雅的方法从 TimeSpan 中删除秒数?
Is there a more elegant way of removing seconds from a TimeSpan?
假设我有一个 TimeSpan
等于 07:10:30,我可以使用以下代码从中删除秒数:
myTimeSpan = new TimeSpan(myTimeSpan.Hours, myTimeSpan.Minutes, 0)
这样合适吗,或者有更优雅的方法来实现吗?
我会求婚
TimeSpan.FromMinutes((long) myTimeSpan.TotalMinutes)
这会删除任何小于一分钟的时间部分,同时保留任何较大的部分,例如天数、小时数等。如果您想四舍五入到最近的分钟而不是截断,请使用 Math.Round。
制作一个扩展方法,向零舍入到最接近的TimeSpan.TicksPerMinute
。
public static class TimeSpanExtensions
{
public static TimeSpan WithoutSeconds(this TimeSpan ts)
{
const long ps = TimeSpan.TicksPerMinute;
long roundedTicks = ts.Ticks / ps * ps;
return new TimeSpan(roundedTicks);
}
}
参考:https://docs.microsoft.com/en-us/dotnet/api/system.timespan.ticks?view=net-5.0#System_TimeSpan_Ticks
假设我有一个 TimeSpan
等于 07:10:30,我可以使用以下代码从中删除秒数:
myTimeSpan = new TimeSpan(myTimeSpan.Hours, myTimeSpan.Minutes, 0)
这样合适吗,或者有更优雅的方法来实现吗?
我会求婚
TimeSpan.FromMinutes((long) myTimeSpan.TotalMinutes)
这会删除任何小于一分钟的时间部分,同时保留任何较大的部分,例如天数、小时数等。如果您想四舍五入到最近的分钟而不是截断,请使用 Math.Round。
制作一个扩展方法,向零舍入到最接近的TimeSpan.TicksPerMinute
。
public static class TimeSpanExtensions
{
public static TimeSpan WithoutSeconds(this TimeSpan ts)
{
const long ps = TimeSpan.TicksPerMinute;
long roundedTicks = ts.Ticks / ps * ps;
return new TimeSpan(roundedTicks);
}
}
参考:https://docs.microsoft.com/en-us/dotnet/api/system.timespan.ticks?view=net-5.0#System_TimeSpan_Ticks