selon http://dev.mysql.com/doc/refman/5.0/en/datetime.html . je dois trouver un moyen de convertir la valeur de chaîne "AAAA-MM-JJ HH: MM: SS" en un horodatage int.
j'ai recherché dans le doc de python.
j'ai essayé:
print(time.strptime('2013-01-12 15:27:43', '%Y-%m-%d %H:%M:%S'))
python me donne un résultat comme celui-ci.
time.struct_time (tm_year = 2013, tm_mon = 1, tm_mday = 12, tm_hour = 15, tm_min = 27, tm_sec = 43, tm_wday = 5, tm_yday = 12, tm_isdst = -1)
j'ai essayé de convertir l'horodatage au format AAAA-MM-JJ HH: MM: SS
print(time.strftime('%Y-%m-%d %H:%M:%S',time.time()))
python me donne une erreur de type.
j'utilise uniquement l'horodatage pour calculer l'heure et la date, j'espère qu'il existe déjà un moyen en python, simple et efficace, et je n'ai pas à créer de données temporaires.
selon la réponse, j'écris deux méthodes. j'espère que ce serait utile
import time
def convertTimestampToSQLDateTime(value):
return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(value))
def convertSQLDateTimeToTimestamp(value):
return time.mktime(time.strptime(value, '%Y-%m-%d %H:%M:%S'))
Heureux de mettre à jour cela si je ne comprends pas bien, mais voici quelques exemples qui peuvent vous aider. Notez que cela utilise le module datetime
au lieu de time
.
>>> import datetime
Ici, nous mettons en place un exemple d'horodatage ts
et un format f
:
>>> ts = '2013-01-12 15:27:43'
>>> f = '%Y-%m-%d %H:%M:%S'
Semblable à ce que vous avez fait ci-dessus, nous utilisons la fonction strptime
(de datetime.datetime
) Pour convertir notre chaîne en un objet datetime
en fonction du paramètre de formatage:
>>> datetime.datetime.strptime(ts, f)
datetime.datetime(2013, 1, 12, 15, 27, 43)
Maintenant à l'envers - ici, nous utilisons datetime.datetime.now()
pour obtenir l'heure actuelle en tant qu'objet datetime
:
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 1, 12, 0, 46, 54, 490219)
Dans le cas datetime
, la méthode strftime
est en fait appelée sur l'objet datetime
lui-même, avec le paramètre de formatage comme argument:
>>> now.strftime(f)
'2013-01-12 00:46:54'
Dans votre situation, la raison pour laquelle vous obtenez une erreur est que time.time()
renvoie un flottant:
>>> time.time()
1357980846.290231
Mais time.strftime
A besoin d'un tuple time
, similaire à ce que vous aviez ci-dessus. Sans entrer dans la spirale exaspérante qu'est le temps, une fonction telle que time.localtime()
renverra le tuple time
susmentionné et retournera comme vous vous y attendez:
>>> now = time.localtime()
>>> now
time.struct_time(tm_year=2013, tm_mon=1, tm_mday=12, tm_hour=0, tm_min=55, tm_sec=55, tm_wday=5, tm_yday=12, tm_isdst=0)
>>> f = '%Y-%m-%d %H:%M:%S'
>>> time.strftime(f, now)
'2013-01-12 00:55:55'