Существует ли API для преобразования формата “ГГГГМДДХХМ ММСС.UUUUUU-TZO” в C # DateTime?
-
06-09-2019 - |
Вопрос
Пример:"20080807144334.410187-180" (-180 означает GMT минус три часа.В данном случае в Рио-де-Жанейро.)
Этот формат строки возвращается, когда я запрашиваю время создания / изменения / доступа к файлу через WMI (это не совсем работает;видишь здесь).Я думаю, я мог бы разобрать это идиотским способом, извлекая год, месяц и т.д.с позиций строки.Но я бы не хотел изобретать велосипед заново.System.Конструкторы DateTime не обрабатывают этот формат.Должен ли я продолжать и делать это по-идиотски, или есть что-то получше?
Решение
Вы должны уметь использовать DateTime.ParseExact
или .TryParseExact
чтобы придать ему определенный формат для использования при синтаксическом анализе.
Однако я не думаю, что вы можете заставить его читать ваш часовой пояс в этом формате (хотя на самом деле я не могу понять, как заставить его читать часовой пояс в любом формате).
В остальном это выглядело бы примерно так:
DateTime.ParseExact("20080807144334.410187", "yyyyMMddHHmmss.ffffff", System.Globalization.CultureInfo.InvariantCulture)
Другие советы
Вам следует взглянуть на DateTime.Попробуйте метод ParseExact.Это позволит вам использовать формат, из которого вы конвертируете.
http://msdn.microsoft.com/en-us/library/system.datetime.tryparseexact.aspx