Похоже на ту же проблему, что и: https://railsblogs.rohityadav.in/2018/01/awss3errorsaccessdenied-access-denied.html
Если вы получили это ошибка при попытке загрузки на S3, вам необходимо назначить этому пользователю IAM политику «AmazonS3FullAccess».
blockquote>Или это может быть проблема с настройкой heroku:
AWS :: S3 :: Errors :: AccessDenied. Невозможно сохранить в S3 с Ruby on Rails
Вам нужно установить свои учетные данные AWS в качестве переменных конфигурации в heroku (в основном, переменных среды). Вы можете проверить, установлены ли они с помощью настройки heroku; если они не установлены, вы можете добавить их с помощью конфигурации heroku: set S3_BUCKET_NAME = что-то AWS_ACCESS_KEY_ID = что угодно AWS_SECRET_ACCESS_KEY = something_secret. Больше информации с помощью настройки heroku --help
blockquote>
Добавление маленького изменения к estani's превосходный ответ
Локальный для ISO 8601 с TimeZone и никакая информация с 1110 микросекундами (Python 3):
import datetime, time
utc_offset_sec = time.altzone if time.localtime().tm_isdst else time.timezone
utc_offset = datetime.timedelta(seconds=-utc_offset_sec)
datetime.datetime.now().replace(microsecond=0, tzinfo=datetime.timezone(offset=utc_offset)).isoformat()
Демонстрационный Вывод:
'2019-11-06T12:12:06-08:00'
Протестированный, что этот вывод может быть проанализирован и Javascript Date
и C# DateTime
/ DateTimeOffset
Вам нужно использовать OS.Stat
, чтобы получить время создания файлов и комбинацию Time.Stime.
и Time.TimeZone
для форматирования для форматирования:
>>> import time
>>> import os
>>> t = os.stat('C:/Path/To/File.txt').st_ctime
>>> t = time.localtime(t)
>>> formatted = time.strftime('%Y-%m-%d %H:%M:%S', t)
>>> tz = str.format('{0:+06.2f}', float(time.timezone) / 3600)
>>> final = formatted + tz
>>>
>>> final
'2008-11-24 14:46:08-02.00'
Поправьте меня, если я ошибаюсь (я не ошибаюсь), но смещение от UTC меняется с переходом на летнее время. Поэтому вы должны использовать
tz = str.format('{0:+06.2f}', float(time.altzone) / 3600)
Я также считаю, что знак должен быть другим:
tz = str.format('{0:+06.2f}', -float(time.altzone) / 3600)
Я могу ошибаться, но я так не думаю.