Как лучше всего преобразовать секунды в (час: минуты: секунды: миллисекунды) время?
Допустим, у меня есть 80 секунд. Существуют ли какие-либо специализированные классы / методы в .NET, которые позволили бы мне преобразовать эти 80 секунд в формат (00h: 00m: 00s: 00ms), например, в DateTime или что-то подобное?
using System;
Класс проживает вSystem.TimeSpan
.Для .NET> 4.0 вы можете использовать
или если вы хотите формат даты и времени, то вы также можете сделать это
Для получения дополнительной информации вы можете проверить строки формата Custom TimeSpan
источник
HH
там недействительно..NET/C#
.ToString(@"hh\:mm\:ss\:fff");
уже в24hr
формате.HH
недопустимо там с таким вводом ( ошибка естьInput string was not in a correct format.
)Если вы знаете, что у вас есть количество секунд, вы можете создать значение TimeSpan, вызвав TimeSpan.FromSeconds:
Затем вы можете получить количество дней, часов, минут или секунд. Или используйте одну из перегрузок ToString, чтобы вывести ее любым удобным для вас способом.
источник
Я сделал несколько тестов, чтобы увидеть, какой путь самый быстрый, и это мои результаты и выводы. Я запускал каждый метод 10 миллионов раз и добавил комментарий со средним временем выполнения.
Если ваши входные миллисекунды не ограничены одним днем (ваш результат может быть 143: 59: 59.999), это варианты от быстрой до медленной:
Если ваши входные миллисекунды ограничены одним днем (ваш результат никогда не будет больше 23: 59: 59.999), это варианты от быстрой до медленной:
Если ваш ввод занимает всего несколько секунд , методы немного быстрее. Опять же, если ваши входные секунды не ограничены одним днем (ваш результат может быть 143: 59: 59):
И если ваши входные секунды ограничены одним днем (ваш результат никогда не будет больше 23:59:59):
В качестве последнего комментария, позвольте мне добавить, что я заметил, что
string.Format
это немного быстрее, если вы используетеD2
вместо00
.источник
http://msdn.microsoft.com/en-us/library/system.timespan.fromseconds.aspx
источник
Конструктор TimeSpan позволяет передавать в считанные секунды. Просто объявите переменную типа TimeSpan количество секунд. Пример:
источник
Я бы посоветовал вам использовать
TimeSpan
класс для этого.Выходы:
источник
В VB.NET, но то же самое в C #:
источник
Для .NET <4.0 (например, Unity ) вы можете написать метод расширения, который будет вести себя
TimeSpan.ToString(string format)
как .NET> 4.0И из любого места в вашем коде вы можете использовать его так:
Таким образом, вы можете отформатировать любой
TimeSpan
объект, просто вызвав ToString из любого места вашего кода.источник
Зачем людям TimeSpan И DateTime, если у нас есть DateTime.AddSeconds ()?
Дата произвольна. totalSeconds может быть больше 59, и это в два раза. Затем вы можете отформатировать свое время, как вы хотите, используя DateTime.ToString ():
Это не работает, если totalSeconds <0 или> 59:
источник
//Тест
источник
чтобы получить общее количество секунд
и получить дату и время от секунд
источник
Это вернет в формате чч: мм: сс
источник
ConvertTime(80)
возвращается0:1:20
иConvertTime(61)
возвращается0:1:1
, оба из которыхh:m:s
. Использование интерполяции строк также приводит к увеличениюToString()
длины кода по сравнению с другими ответами, а также затрудняет визуализацию длины отформатированной строки.