2012-08-01 9 views
5

Ho un DateTimeField:Django DateTimeField da confrontare con datetime.now()

class Assignment (models.Model): 
    official_deadline = models.DateTimeField(null=True, blank=True) 

ho bisogno di confrontarlo con data e ora correnti, ho provato:

def official_deadline_past(self): 
    if datetime.datetime.today() > self.official_deadline: 
     return True 
    return False 

ma restituisce sempre False ho anche provato:

def official_deadline_past(self): 
    if datetime.datetime.now() > self.official_deadline: 
     return True 
    return False 

Ma io ho lo stesso problema.

ho un'informazione nel settore: 2011-07-02 00:00:00 per esempio sotto forma generata dal ModelForm

+0

Il codice che hai pubblicato dovrebbe funzionare. Potresti aggiungere qualche dettaglio in più. Se si stampa/registra il valore di 'self.official_deadline' nel metodo, qual è il valore? – Alasdair

+0

Concordo con Alasdair: è necessario verificare i valori restituiti dal confronto. Questo è quando amo usare la shell di django. –

+0

Ho: 'datetime.datetime (2011, 7, 2, 5, 0, tzinfo = )' quando chiedo un 'assignment.official_deadline'. E '>' quando chiedo un 'assignment.official_deadline_past' – nlassaux

risposta

0

Ho avuto un problema simile confronto DateTimeField con datetime sotto pitone 2.7.3 e 1.3.1 django

I don Penso che DateTimeField abbia avuto un buon supporto per il fuso orario, oppure non l'ho configurato correttamente.

Ogni volta che ho specificato un fuso orario per il campo datetime tutti i miei confronti di DateTimeField> datetime non avrebbero avuto esito positivo.

datetime utilizzava l'ora centrale locale mentre DateTimeField è stato inserito come orientale.

Ho finito per inserire uno stupido trucco per aggiungere un timedelta (ore = 1) all'oggetto centrale datetime per "convertirlo" in orientale.

Problemi correlati