Преобразовать время изменения объекта S3 в местное время в Python - PullRequest
0 голосов
/ 24 марта 2020

Я получаю объекты S3 с помощью приведенного ниже кода и удаляю объекты, относящиеся к предыдущему дню:

 today = datetime.now().strftime('%Y-%m-%d')
 s3 = boto3.client('s3', region_name='eu-central-1')
 s3_objects = s3.list_objects(Bucket='bucket', Prefix ='path/to/folder/')
 for o in s3_objects["Contents"]:
     if o["LastModified"].strftime('%Y-%m-%d') != today:
         s3.delete_object(Bucket='bucket', Key=o['Key'])

Однако измененная временная метка объектов S3 находится в UT C, поэтому я не получаю желаемых результатов. Я могу изменить текущую временную метку на локальную временную метку, используя pytz:

datetime.now(pytz.timezone('Europe/Berlin')).strftime('%Y-%m-%d %H:%M:%S')

Использование того же самого на o ["LastModified"] не работает и выдает ошибку TypeError: 'datetime.datetime' object is not callable

Одним из решений является просто добавление часов разницы во времени, но это невозможно сделать из-за разницы во времени с UT C из-за экономии дневного света.

Может кто-нибудь помочь мне с тем, как преобразовать дату модификации объекта S3 по местному времени (CET)?

1 Ответ

0 голосов
/ 24 марта 2020

Заменить if o["LastModified"].strftime('%Y-%m-%d') != today:

на if o["LastModified"].astimezone(pytz.timezone("Europe/Berlin")).strftime('%Y-%m-%d') != today:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...