Как в C# преобразовывать строки формата '1 days ago' в DateTime?
Формулировка задачи:
Было тестовое задание на собеседовании. Я не справился, правильное решение мне не сказали.
Задача такова:
1 days ago
1 November 2010
11.1.2010
Дана строка. она может быть любой из трёх выше. нужно написать код, который будет преобразовывать строку в DateTime (формат - USA). если сделать всё правильно, то значения всех трёх строк в DateTime будут одинаковы.
Я предоставил такой вариант:
Мне сказали, что строка должна парситься без каких-либо дополнительных преобразований. всё должен уметь делать DateTime. К примеру, если сделать всё правильно, и запустить со строкой "10 minutes ago", то всё равно должно работать.
Каким образом это делается?
Листинг программы
- CultureInfo us = CultureInfo.CreateSpecificCulture("en-US");
- string str;
- DateTime date;
- str = Console.ReadLine();
- if(str.IndexOf("days ago")!=(-1)){
- string str1 = str.Remove(str.IndexOf("days ago"));
- date = DateTime.Today.AddDays(Convert.ToDouble(str1)*-1);
- }
- else{date = DateTime.Parse(str, us);}
Решение задачи: «Как в C# преобразовывать строки формата '1 days ago' в DateTime?»
textual
Листинг программы
- CultureInfo culture = new CultureInfo("en-US");
- string str = @"1 days ago";
- string[] formats = { @"d' days ago'", "M' months ago'", "H' hours ago'", "m' minutes ago'" };
- TimeSpan span;
- DateTime date;
- if (!DateTime.TryParse(str, out date))
- {
- if (TimeSpan.TryParseExact(str, formats, culture, TimeSpanStyles.AssumeNegative, out span))
- {
- date = DateTime.Now + span;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д