2009-09-04 9 views
1

Dans le code ci-dessous, j'ai besoin de manipuler le temps var en python pour afficher un horodatage en python pour représenter ce délai. Par exemple, lorsque l'utilisateur entre le temps de retard en heures, j'ai besoin de mettre jcarddeliver var pour se mettre à jour avec la valeur de la date/heure + délai actuel.Manipulation du temps en python

De même, il faut également mettre à jour la date var. Par exemple, si la date est le 24 février et le temps est 15:00 heures et le temps de retard est de 10 heures, la date de jcarddeliver devrait passer au 25 février

jcarddate = time.strftime("%a %m/%d/%y", time.localtime()) 
jcardtime = time.strftime("%H:%M:%S", time.localtime()) 
delay = raw_input("enter the delay: ") 
jcarddeliver = ?? 

J'espère juste que je fais sens.

Répondre

3

Vous pouvez essayer le module datetime, par exemple

import datetime 
now = datetime.datetime.now() 
delay = float (raw_input ("enter delay (s): ")) 
dt = datetime.timedelta (seconds=delay) 
then = now + dt 
print now 
print then 
+0

d'après ce que je vois, les variables maintenant et ensuite ne peuvent être affichées correctement en utilisant le module d'impression. Que faire si je dois transmettre ces valeurs à la base de données. il me donne une erreur en disant, pas tous les arguments convertis pendant le formatage de chaîne. – amit

+0

Dans l'exemple ci-dessus, les variables 'now' et 'then' sont des objets datetime. Lorsque vous les imprimez, ils sont convertis en chaîne. Si vous voulez vraiment une chaîne, essayez la fonction str(), par ex. str (maintenant). Bien sûr, vous pouvez également utiliser now.year, now.month, etc. Plus d'informations sur http://docs.python.org/library/datetime.html. –

0

« Je dois définir le jcarddeliver var se mettre à jour avec la valeur de la date/heure actuelle + retard »

Que diriez-vous reformulant cela

jcarddeliver devrait être la date-heure plus la retard.

La "mise à jour elle-même" n'est pas parfaitement sensée.

les opérations suivantes:

  1. Essayez la manière la plus évidente de calcul "date-heure actuelle plus le retard"

  2. imprimer le résultat.

  3. Essayez d'utiliser localtime() pour ce résultat. Qu'est ce que tu obtiens?

1

Le résultat de time.time() est une valeur à virgule flottante du nombre de secondes écoulées depuis l'époque. Vous pouvez ajouter des secondes à cette valeur et utiliser time.localtime(), time.ctime() et d'autres fonctions pour obtenir le résultat sous diverses formes:

>>> now = time.time() 
>>> time.ctime(now) 
'Fri Sep 04 16:19:59 2009' # <-- this is local time 
>>> then = now + (10.0 * 60.0 * 60.0) # <-- 10 hours in seconds 
>>> time.ctime(then) 
'Sat Sep 05 02:19:59 2009' 
+0

J'utiliser la solution (http://stackoverflow.com/questions/1381315/manipulating-time-in-python/1381769) de Brian depuis le 'datetime.timedelta() 'L'utilisation est considérablement plus claire. –

0

Essayez ceci:

now = time.time() 
then = now + 365*24*3600 
print time.strftime('%Y-%m-%d', time.localtime(then))