Ошибка в формате даты (Exception has occurred: CLR/System.FormatException). DateTime, C#
Есть ли каноническое решения для парсинга даты, которая выходит за границы 24 часов?
Например для таких,
'2022.05.22 24:00'
'2022.05.22 24:10'
Ошибка, которую я ловлю
Exception has occurred: CLR/System.FormatException
An unhandled exception of type 'System.FormatException' occurred in System.Private.CoreLib.dll: 'The DateTime represented by the string '2022.05.22 24:00' is not supported in calendar 'System.Globalization.GregorianCalendar'.'
Строка кода, которая мне это выдает
...
// values[0]="2022.05.22" и values[1]="24:00"
dateteime = DateTime.Parse((values[0] + ' ' +values[1]), CultureInfo.InvariantCulture),
Понимаю, что могу сделать Replace вот так
...
// values[0]="2022.05.22" и values[1]="24:00"
dateteime = DateTime.Parse((values[0] + ' ' +values[1].Replace("24:", "00:")), CultureInfo.InvariantCulture),
enSO завален подобного рода вопросами, но они либо датируются 10 летней давностью, либо не представляют ценности, так как решают только часть проблемы с датой. А, может, ищу криво.
Ответы (1 шт):
Автор решения: Alexander Petrov
→ Ссылка
using System.Globalization;
var values = new string[] { "2022.05.22", "24:10" };
var date = DateTime.Parse(values[0]);
var timeParts = values[1].Split(':');
int hours = int.Parse(timeParts[0]);
int minutes = int.Parse(timeParts[1]);
var dateTime = date.AddHours(hours).AddMinutes(minutes);
Console.WriteLine(dateTime);
Как-то так.