Лучший способ отформатировать TimeSpan в зависимости от длины [ASP.NET Core MVC] - PullRequest
0 голосов
/ 12 декабря 2018

Я работаю над приложением .NET Core MVC, которое принимает данные о работе пользователя в качестве входных данных и сохраняет их в базе данных.Пользователь будет вводить время (общее время пробега), темп (за милю) и расстояние (в милях), а затем отправлять.Time и Pace - это TimeSpan.

Вот где возникает моя проблема:

Пример: если я хочу ввести время в 45 минут и 15 секунд, пользователь должен войти в 00:45:15, чего они не собираются делать.Если бы они вводили 45:15, в БД он отображался бы как 45 часов 15 минут - что, очевидно, не то, что мы хотим.

Мой вопрос: как лучше всего отформатировать это?поэтому, когда пользователь вводит в этом формате XX:XX, он сохраняет цикл в минутах: секундах, а если пользователь вводит XX:XX:XX (для циклов более часа), он сохраняет в виде часов: минут: секунд?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Как насчет одного размера для всех

        foreach (var s in new[] {"00:45:15", "45:15" })
        {
            var parsed = TimeSpan.TryParseExact(s, new[] { "mm\\:ss", "hh\\:mm\\:ss" }, null, out var result);
            Assert.IsTrue(parsed);
            Assert.AreEqual(0, result.Hours);
            Assert.AreEqual(45, result.Minutes);
            Assert.AreEqual(15, result.Seconds);
        }
0 голосов
/ 12 декабря 2018

Я бы решил эту проблему с некоторой интерполяцией строк.Рассмотрим следующее:

<input type="number" name="minutes" min="0" max="59">
<input type="number" name="seconds" min="0" max="59>

А затем для C #

var minuteTime = Request.Form["minutes"]
var secondTime = Request.Form["seconds"]
FormattableString finalDate = "$00:{minuteTime}:{secondTime}"
//Write to the database with model
...