Nano Hash - криптовалюты, майнинг, программирование

Как преобразовать строку 07:35 (ЧЧ: ММ) в TimeSpan

Я хотел бы знать, есть ли способ преобразовать строку в формате времени 24 часа в TimeSpan.

Сейчас у меня "старомодный стиль":

string stringTime = "07:35";
string[] values = stringTime.Split(':');

TimeSpan ts = new TimeSpan(values[0], values[1], 0);
23.06.2014


Ответы:


1

Хотя правильно, что это будет работать:

TimeSpan time = TimeSpan.Parse("07:35");

И если вы используете его для проверки ...

TimeSpan time;
if (!TimeSpan.TryParse("07:35", out time))
{
    // handle validation error
}

Учтите, что TimeSpan в первую очередь предназначен для работы с прошедшим временем, а не с временем дня. Он принимает значения, превышающие 24 часа, а также отрицательные значения.

Если вам нужно убедиться, что входная строка является действительным временем дня (> = 00:00 и ‹24:00), вам следует подумать об этом:

DateTime dt;
if (!DateTime.TryParseExact("07:35", "HH:mm", CultureInfo.InvariantCulture, 
                                              DateTimeStyles.None, out dt))
{
    // handle validation error
}
TimeSpan time = dt.TimeOfDay;

В качестве дополнительного преимущества это также будет анализировать 12-часовое форматирование времени, когда включены AM или PM, если вы предоставите соответствующую строку формата, например "h:mm tt".

30.06.2014
  • DateTime.TryParse довольно медленно, DateTime.TryParseExact на много миль быстрее. Насколько я понимаю, TryParse пробует набор шаблонов, чтобы увидеть, совпадают ли они, если формат, который вам нужен, находится в конце этого списка, это существенные накладные расходы, которых легко избежать. 30.06.2014
  • Я не могу разобрать время более 24 часов 16.08.2018
  • @ alansiqueira27 - TimeSpan может представлять ›= 24 часа, но в виде строки он обрабатывает их как дни. Итак, ParseExact и т. Д. Не могут их проанализировать. Было бы неплохо, если бы для этого был какой-то другой токен, но, увы, его нет. Вместо этого можно анализировать такие строки вручную, например, как показано в этом ответе. 16.08.2018

  • 2

    Пытаться

    var ts = TimeSpan.Parse(stringTime);
    

    С более новой версией .NET у вас также есть

    TimeSpan ts;
    
    if(!TimeSpan.TryParse(stringTime, out ts)){
         // throw exception or whatnot
    }
    // ts now has a valid format
    

    Это общая идиома для синтаксического анализа строк в .NET, при этом первая версия обрабатывает ошибочную строку с помощью исключения FormatException, а вторая позволяет логическому параметру TryParse напрямую передавать вам информацию.

    23.06.2014

    3

    Используйте TimeSpan.Parse для преобразования строки

    http://msdn.microsoft.com/en-us/library/system.timespan.parse%28v=vs.110%29.aspx

    23.06.2014

    4

    Вы можете преобразовать время, используя следующий код.

    TimeSpan _time = TimeSpan.Parse("07:35");
    

    Но если вы хотите узнать текущее время дня, вы можете использовать следующий код:

    TimeSpan _CurrentTime = DateTime.Now.TimeOfDay;
    

    В результате получится:

    03:54:35.7763461
    

    С объектом могут быть часы, минуты, секунды, тики и т. Д.

    18.06.2016
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..