Как в C# преобразовывать строки формата '1 days ago' в DateTime?

Узнай цену своей работы

Формулировка задачи:

Было тестовое задание на собеседовании. Я не справился, правильное решение мне не сказали. Задача такова: 1 days ago 1 November 2010 11.1.2010 Дана строка. она может быть любой из трёх выше. нужно написать код, который будет преобразовывать строку в DateTime (формат - USA). если сделать всё правильно, то значения всех трёх строк в DateTime будут одинаковы. Я предоставил такой вариант:
Листинг программы
  1. CultureInfo us = CultureInfo.CreateSpecificCulture("en-US");
  2. string str;
  3. DateTime date;
  4. str = Console.ReadLine();
  5. if(str.IndexOf("days ago")!=(-1)){
  6. string str1 = str.Remove(str.IndexOf("days ago"));
  7. date = DateTime.Today.AddDays(Convert.ToDouble(str1)*-1);
  8. }
  9. else{date = DateTime.Parse(str, us);}
Мне сказали, что строка должна парситься без каких-либо дополнительных преобразований. всё должен уметь делать DateTime. К примеру, если сделать всё правильно, и запустить со строкой "10 minutes ago", то всё равно должно работать. Каким образом это делается?

Решение задачи: «Как в C# преобразовывать строки формата '1 days ago' в DateTime?»

textual
Листинг программы
  1.             CultureInfo culture = new CultureInfo("en-US");
  2.  
  3.             string str = @"1 days ago";
  4.            
  5.             string[] formats = { @"d' days ago'", "M' months ago'", "H' hours ago'", "m' minutes ago'" };
  6.            
  7.             TimeSpan span;
  8.             DateTime date;
  9.  
  10.             if (!DateTime.TryParse(str, out date))
  11.             {
  12.                 if (TimeSpan.TryParseExact(str, formats, culture, TimeSpanStyles.AssumeNegative, out span))
  13.                 {
  14.                     date = DateTime.Now + span;
  15.                 }
  16.             }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы