390 votes

Python: Conversion de l'époque en date et heure

Je reçois une réponse de la part du reste est d'une Époque format, comme

start_time = 1234566
end_time = 1234578

Je veux convertir cette époque secondes dans MySQL format de temps pour que je puisse stocker les différences dans ma base de données MySQL.

J'ai essayé:

>>> import time
>>> time.gmtime(123456)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=2, tm_hour=10, tm_min=17, tm_sec=36, tm_wday=4, tm_yday=2, tm_isdst=0)

Le résultat ci-dessus n'est pas ce que j'attends. Je veux être comme elle

2012-09-12 21:00:00

Veuillez indiquer comment puis-je y parvenir?

Aussi, Pourquoi je reçois TypeError: a float is required pour

>>> getbbb_class.end_time = 1347516459425
>>> mend = time.gmtime(getbbb_class.end_time).tm_hour
Traceback (most recent call last):
  ...
TypeError: a float is required

451voto

ron.rothman Points 2970

Pour convertir votre valeur temporelle (float ou int) en une chaîne mise en forme, utilisez:

 time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1347517370))
 

276voto

png Points 323

Vous pouvez également utiliser datetime :

 >>> import datetime
>>> datetime.datetime.fromtimestamp(1347517370).strftime('%Y-%m-%d %H:%M:%S')
  '2012-09-13 02:22:50'
 

19voto

ronak Points 609

C'est ce dont vous avez besoin

 In [1]: time.time()
Out[1]: 1347517739.44904

In [2]: time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time()))
Out[2]: '2012-09-13 06:31:43'
 

Veuillez saisir float au lieu de int et les autres TypeError devraient disparaître.

 mend = time.gmtime(float(getbbb_class.end_time)).tm_hour
 

12voto

dkamins Points 10565

Essaye ça:

 >>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(1347517119))
'2012-09-12 23:18:39'
 

Également dans MySQL, vous pouvez FROM_UNIXTIME comme:

 INSERT INTO tblname VALUES (FROM_UNIXTIME(1347517119))
 

Pour votre deuxième question, c'est probablement parce que getbbb_class.end_time est une chaîne. Vous pouvez le convertir en numérique comme: float(getbbb_class.end_time)

8voto

user2899300 Points 11
 #This adds 10 seconds from now.
from datetime import datetime
import commands

date_string_command="date +%s"
utc = commands.getoutput(date_string_command)
a_date=datetime.fromtimestamp(float(int(utc))).strftime('%Y-%m-%d %H:%M:%S')
print('a_date:'+a_date)
utc = int(utc)+10
b_date=datetime.fromtimestamp(float(utc)).strftime('%Y-%m-%d %H:%M:%S')
print('b_date:'+b_date)
 

C'est un peu plus verbeux mais cela vient de la commande date sous unix.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X