Как узнать текущее время по Гринвичу в этом самом формате "Sun, 22 Sep 2019 09:18:13 GMT" в python - PullRequest
0 голосов
/ 22 сентября 2019

Даже если он больше не используется в пользу UTC, конечная точка, которую я пытаюсь запросить, требует подписи hmac с заголовком даты в этом формате: "Sun, 22 Sep 2019 09:18:13 GMT"

Этот устаревший метод new Date().toGMTString(); делаетJS SDK работает, мне нужен эквивалент в Python.

time.strftime("%a, %d %b %Y %I:%M:%S %Z", time.gmtime()) возвращает полное имя (т.е. ВРЕМЯ ЦЕНТРАЛЬНОЙ ЕВРОПЫ), в то время как time.strftime("%a, %d %b %Y %I:%M:%S %z", time.gmtime()) возвращает "Sun, 22 Sep 2019 09:18:13 +0100".

Самое близкое, что я получил, это time.strftime("%a, %d %b %Y %I:%M:%S GMT", time.gmtime()), который теоретически выводит правильную строку, но я все равно получаю эту ошибку: "{\"message\":\"HMAC signature cannot be verified, a valid date or x-date header is required for HMAC Authentication\"}"

Ответы [ 2 ]

1 голос
/ 22 сентября 2019
import datetime

print(datetime.datetime.now(datetime.timezone.utc).strftime('%a, %d %b %Y %H:%M:%S GMT'))

Это работает для меня :) Источник форматирования

0 голосов
/ 22 сентября 2019

Посмотрите здесь: https://www.programiz.com/python-programming/datetime/strftime

Убедитесь, что вы используете % Z, а не% z .

from datetime import datetime
import time

now = datetime.now() # current date and time

date_time = time.strftime("%a, %d %b %Y %H:%M:%S %Z", time.gmtime())
# output: date and time: Sun, 22 Sep 2019 10:01:53 GMT
print("date and time in GMT:",date_time)

# output: Local: Sun, 22 Sep 2019 10:01:53 AM UTC
print("Local: " + time.strftime("%a, %d %b %Y %I:%M:%S %p %Z\n")) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...