Comment puis-je soustraire deux dates dans Django/Python?
Je suis en train de travailler sur un peu de fitness tracker afin de m'enseigner Django. Je veux graphique de mon poids au fil du temps, j'ai donc décidé d'utiliser le Python Google Charts Wrapper. Google charts exige que vous convertissez votre date en abscisse. Pour ce faire, je veux prendre le nombre de jours dans ma base de données en soustrayant la première pesée depuis la dernière pesée et puis en utilisant la figure x coords (par exemple, je pouvais 100 par le résultat et incrémenter le x coord par le nombre qui en résulte pour chaque y coord.)
De toute façon, j'ai besoin de comprendre comment soustraire Django datetime objets l'un de l'autre et pour l'instant, je suis en frappant sur google et ici à la pile. Je sais que PHP, mais n'ont jamais obtenu une poignée sur la programmation orientée-objet, s'il vous plaît excuser mon ignorance. Voici ce que mes modèles ressemblent:
class Goal(models.Model):
goal_weight = models.DecimalField("Goal Weight",
max_digits=4,
decimal_places=1)
target_date = models.DateTimeField("Target Date to Reach Goal")
set_date = models.DateTimeField("When did you set your goal?")
comments = models.TextField(blank=True)
def __unicode__(self):
return unicode(self.goal_weight)
class Weight(models.Model):
""" Weight at a given date and time. """
goal = models.ForeignKey(Goal)
weight = models.DecimalField("Current Weight",
max_digits=4,
decimal_places=1)
weigh_date = models.DateTimeField("Date of Weigh-In")
comments = models.TextField(blank=True)
def __unicode__(self):
return unicode(self.weight)
def recorded_today(self):
return self.date.date() == datetime.date.today()
Toutes les idées sur la façon de procéder dans la vue? Merci beaucoup!
Vous devez vous connecter pour publier un commentaire.
Vous pouvez juste soustraire les dates directement, ce qui va donner un
datetime.timedelta
objet:Un
timedelta
objet a des champs pour les jours, les secondes et microsecondes. À partir de là, vous pouvez faire les mathématiques appropriés. Par exemple:Django
datetime
objets régulière Pythondatetime
objets. Lorsque vous soustrayez undatetime
de l'autre, vous obtenez unetimedelta
objet.Si vous êtes à la recherche pour soustraire un délai d'un
datetime
vous devez soustraire untimedelta
objet à partir d'elle. Par exemple:Noter que la soustraction ne fonctionnera pas dans le cas où les deux date de fois avez-décalage différent de la conscience, par exemple, l'une avec tzinfo et l'autre sans (native).