Формат даты в Python со смещением и часами и минутами

#python #date #avro

#питон #Дата #avro

Вопрос:

У меня есть дата, как показано ниже, в файле csv, который я хочу загрузить в файл avro с тем же форматом,

Значения даты:

 2020-01-29 21:08:53.0041  00:00
 

Формат, который я пытался преобразовать, выглядит следующим образом:

 %d.%m.%Y %H:%M:%S.%f  %h:%m
 

который загружается как null в файле avro.

Схема, о которой я упоминал в avro, выглядит следующим образом:

 {
                "name": "requestdate",
                "type": [
                    "null",
                    "long"
                ],
                "default": null,
                "logicalType": "timestamp-millis",
                "doc": "requestdate"
 

Может кто-нибудь помочь мне загрузить правильный формат

Спасибо

Ответ №1:

Вы можете использовать datetime strptime метод. Однако поле часового пояса недопустимо, поэтому вы должны удалить из него точку с запятой. Вы можете использовать регулярное выражение для исправления поля часового пояса.

 from datetime import datetime
import re

# example
dt = '2020-01-29 21:08:53.0041  00:00'

# remove semicolon in timezone field
dt = re.sub(r"([ -]d ):(d )$", r"12", dt)

# parse
value = datetime.strptime(dt, '%Y-%m-%d %H:%M:%S.%f %z')

print(value)
 

Вывод

 2020-01-29 21:08:53.004100 00:00
 

Ответ №2:

Попробуйте этот формат:

%Y-%m-%d %H:%M:%S.%f %z

Комментарии:

1. Нет, это не работает. может быть из-за преобразования avro (как я уже упоминал, логический тип как «отметка времени-миллис»)?