Как в 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д