web-dev-qa-db-fra.com

Date d'échéance incorrecte sur Trello

À des fins d’explication, disons que mon fuseau horaire est GMT-3 ou également appelé America/Sao_Paulo et que j’ai la date et l’heure suivantes en portugais: segunda, 2 Mai 2016, 23:55 BRT qui se traduit par Monday, 2 May 2016, 23:55 BRT.

Je peux facilement le convertir en datetime.datetime en utilisant dateparser :

import pytz
from dateparser import parse

str_date = 'segunda, 2 Mai 2016, 23:55 BRT'

dt = parse(str_date, languages=['pt'], settings={'TIMEZONE': 'America/Sao_Paulo', 'RETURN_AS_TIMEZONE_AWARE': True})
print(dt, type(dt))  # returns: datetime.datetime(2016, 5, 2, 23, 55, tzinfo=<DstTzInfo 'America/Sao_Paulo' BRT-1 day, 21:00:00 STD>) <class 'datetime.datetime'>

dt_in_utc = dt.astimezone(pytz.timezone('UTC'))
print(dt_in_utc, type(dt_in_utc))  # returns: datetime.datetime(2016, 5, 3, 2, 55, tzinfo=<UTC>) <class 'datetime.datetime'>

dt_in_utc_tsp = dt_in_utc.timestap()
print(dt_in_utc_tsp, type(dt_in_utc_tsp))  # returns: 1462244100.0 <class 'float'>

trello.cards.update_due(card["id"], datetime.utcfromtimestamp(dt_in_utc_tsp))

L’API de date d’échéance Trello peut être trouvé ici , et selon ceci , les dates d’échéance des magasins Trello au format UTC.

Trello affiche toujours les dates sur les cartes en utilisant le fuseau horaire des utilisateurs. Dans mon cas, GMT-3 America/Sao_Paulo, la date de la carte doit être identique à celle de l’original, 2 May 2016, 23:55, mais c’est pas ce qui se passe, à la place je reçois 3 May 2016, 3:55 sur la carte. Qu'est-ce qui ne va pas?


UPDATE # 1 : Il s'agit du code JSON renvoyé par trello.cards.update_due(card["id"], datetime.utcfromtimestamp(dt_in_utc_tsp)) (données personnelles supprimées):

{'badges': {'attachments': 1,
            'checkItems': 0,
            'checkItemsChecked': 0,
            'comments': 0,
            'description': False,
            'due': '2016-05-03T06:55:00.000Z',
            'fogbugz': '',
            'subscribed': False,
            'viewingMemberVoted': False,
            'votes': 0},
 'checkItemStates': [],
 'closed': False,
 'dateLastActivity': '2016-05-28T15:35:18.708Z',
 'desc': '',
 'descData': None,
 'due': '2016-05-03T06:55:00.000Z',
 'email': None,
 'id': '--removed--',
 'idAttachmentCover': None,
 'idBoard': '--removed--',
 'idChecklists': [],
 'idLabels': ['--removed--'],
 'idList': '--removed--',
 'idMembers': [],
 'idShort': 83,
 'labels': [--removed--],
 'manualCoverAttachment': False,
 'name': '--removed--',
 'pos': 131071.5,
 'shortUrl': '--removed--',
 'url': '--removed--'}

De ce JSON, je peux deviner qu'ils le stockent comme 2016-05-03T06:55:00.000Z

1
JChris

Utilisez le format ISO 8601 pour les dates dans l'API Trello. En Python:

datetime.isoformat ()

1
Ludable