Округлить время до одной десятой секунды

Как можно округлить TimeSpan или DateTime до одной десятой секунды?

TimeSpan timeCode = TimeSpan.FromSeconds(secs);

Знаю такой способ:

  • Сконвертировать миллисекунды в строку
  • Взять первый символ и сконвертировать обратно

Но это ведь так не делается :man_shrugging:

А это как? Может просто при выводе в строку форматировать?)

        public static TimeSpan ParseTimeCode(string timeCode)
        {
            string fmt = timeCode.Contains(".") ? "HH:mm:ss.f" : "HH:mm:ss";
            if (DateTime.TryParseExact(timeCode, fmt, null, System.Globalization.DateTimeStyles.None, out DateTime dt))
            {
                return new TimeSpan(0, dt.Hour, dt.Minute, dt.Second, dt.Millisecond);
            }
            return new TimeSpan(long.MaxValue);
        }

Надо чтобы, например, 080ms / 110ms / 140ms округлялось до 100ms.
Чтобы вызывающий метод считал это одним и тем же временем. Потому что нужна точность только до одной десятой секунды.

Дык TimeSpan пусть хоть в наносекундах хранит, просто используйте при выводе нужный формат.

Мне надо сравнить одно время с другим с точностью до одной десятой секунды. Не строчки же сравнивать?

(dt.Millisecond + 50) / 100 * 100
1 лайк

:thinking:
попробую