2017-10-19 7 views
1

Salut, je ne parviens pas à obtenir le temps il y a deux heures dans une fonction similaire à mon get_timestamp =>obtenir le temps gmt il y a deux heures Python 2.7

def get_timestamp(): 
    """Return correctly formatted timestamp""" 
    return strftime("%Y-%m-%dT%H:%M:%SZ", gmtime()) 
def two_hours_ago(): 
    """Return correctly formatted timestamp""" 
    last = (date.today() - timedelta(hours=1)) 
    return strftime("%Y-%m-%dT%H:%M:%SZ", gmtime()-'2HOURS') 

J'ai essayé ceci:

def two_hours_ago(): 
    """Return correctly formatted timestamp""" 
    today = date.today() 
    yesterday = (today - timedelta(hours=2)) 
    print(yesterday.timetuple()) 
    return strftime("%Y-%m-%dT%H:%M:%SZ", yesterday.timetuple()) 

MISE À JOUR merci Huang Yen Hao

Je cherchais un intervalle de 2 heures retourné au format ISO pour Amazon MWS, j'ai utilisé les fonctions suivantes pour retourner le heure correctement formatée.

def two_hours_ago(): 
    """Return correctly formatted timestamp""" 
    now = datetime.now() 
    two_hours_ago = (now - timedelta(hours=2)) 
    return two_hours_ago.strftime("%Y-%m-%dT%H:%M:%SZ") 
def now(): 
    """Return correctly formatted timestamp""" 
    now = datetime.now() 
    two_hours_ago = (now - timedelta(hours=0)) 
    return two_hours_ago.strftime("%Y-%m-%dT%H:%M:%SZ") 
+1

A 'date' objet n'ont pas le temps. Donc 'aujourd'hui - timedelta (heures = 2)' est un non-sens. –

+2

Si vous voulez travailler avec la date et l'heure UTC, vous pouvez utiliser 'datetime.datetime.utcnow()'. –

+0

_J'ai essayé this_ Qu'est-ce qu'il a fait, et comment cela ne vous at-il pas satisfait? –

Répondre

3

Je ne comprends pas vraiment le code today = date.today().

Cela signifie, par exemple, 2017/10/18 00:00:00?

Le code suivant peut obtenir l'heure il y a deux heures. Je ne sais pas ce que vous ce qui est ou non ..

from datetime import datetime, timedelta 

def two_hours_ago(): 
    """Return correctly formatted timestamp""" 
    now = datetime.now() 
    two_hours_ago = (now - timedelta(hours=2)) 
    return two_hours_ago.strftime("%Y-%m-%dT%H:%M:%SZ") 

Pour ce code, il interprétera comme suit

>>> two_hours_ago() 
'2017-10-19T11:28:40Z' 
+0

merci! Je travaillais à l'origine avec datetime, je n'ai pas compris cela. J'ai mis à jour ma réponse. –