У меня есть файлы данных CSV с временными записями, которые находятся в местном времени. К сожалению, файлы данных охватывают период, в котором изменяется переход на летнее время (3 ноября 2013 года), поэтому временной компонент временных меток для записей: 12:45, 1:00, 1:15, 1:30, 1:45, 1:00, 1:15, 1:30, 1:45, 2:00
. Я хочу иметь возможность конвертировать и сохранять значения в базе данных в формате UTC.
К сожалению, стандартная функция DateTime.Parse()
.NET будет анализироваться как это (все 3 ноября 2013 года):
| Time String | Parsed Local Time | In DST | Parsed Local Time to UTC
| 12:45 am | 12:45 am | Yes | 4:45 am
| 12:59:59 am | 12:59:59 am | Yes | 4:59:59 am
| 01:00 am | 1:00 am | No | 6:00 am
| 01:15 am | 1:15 am | No | 6:15 am
Таким образом, он никогда не видит диапазон 1:00-1:59:59 am
как находящийся в DST, и мои разобранные временные метки в UTC перескакивают через час.
Есть ли библиотека или класс, который позволит мне анализировать временные метки и учитывать изменения в DST? Как какой-то экземплярный класс, который будет помнить поток временных меток, который он уже получил, и соответствующим образом отредактируйте раздельную метку времени?
Предположения о данных, которые могут быть сделаны при разборе:
- У меня есть время начала файла (отметка времени первой записи) в разделе заголовка файла как в локальном, так и в UTC.
- Записи упорядочены по метке
- Все локальные времена в Восточном стандарте
- Данные могут также пойти другим путем: из-за DST в него
- Записи содержат полную временную метку в формате:
yyyy/mm/dd HH:mm:ss
(2013/11/03 00:45:00
)
Примечание. Хотя мое программное обеспечение находится на С#, я не использовал тег С#/. NET, поскольку я решил, что могу использовать любую языковую реализацию решения и, если необходимо, перекодировать.