是否有更优雅的方法从 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