Ну, не правда ли это просто?
System.DateTime.ParseExact("12 NOV 2018 16:08:52:000:000:000",
"dd MMM yyyy HH:mm:ss:fff:fff:fff",
System.Globalization.CultureInfo.InvariantCulture)
Это работает, если все группы f
имеют одинаковые значения, например, все 0
или 123
.
Tbh, я не понимаю, почему вы думаете, что fff:ffffff:fffffffff
соответствует 000:000:000
Для нужд моего бизнеса мне не нужна часть микро / нано секунд.
Вы можете заставить свой второй формат работать, обрезав микро / нано часть:
string date = "12 NOV 2018 16:08:52:000:000:000";
date = date.Remove(date.Remove(date.LastIndexOf(':')).LastIndexOf(':'));
DateTime result = System.DateTime.ParseExact(date, "dd MMM yyyy HH:mm:ss:fff", System.Globalization.CultureInfo.InvariantCulture);
Конечно, это предполагает, что всегда есть как минимум два двоеточия.Очевидно, что вам нужно try-catch
для регистрации недопустимых значений и перехода к следующему.