2011-11-05 4 views
0

Sur mon script de jointure, vous devez être 13+ pour vous inscrire. Le problème c'est quand je le vérifie contre certaines dates cela ne fonctionne que si je le fais un mois en arrière.Vérification de l'âge Python

cur_time = datetime.datetime.utcnow() - datetime.timedelta(days=4848.12) 
    time_13 = str(cur_time.strftime("%Y-%m-%d")) 
    bmonth = self.get_argument('bmonth', '') 
    bday = self.get_argument('bday', '') 
    byear = self.get_argument('byear', '') 
    birthday = byear + '-' + bmonth + '-' + bday 
    if time_13 <= birthday: 
     c_age = True 
    else: 
     c_age = '' 
    if c_age: 
     response = tornado.escape.json_encode({"error":"true","msg":"You must be 13 years of age or older to join uSocial'N"}) 
+0

donner quelques exemples de "certaines dates". –

+0

Aussi [13 ans en jours] (http://www.google.com/search?q=13+years+in+days) est de 4748 jours au lieu de 4848. – egor83

+0

Eh bien, je le compare à la date il y a 13 ans à partir du jour où il est actuellement. Si j'entre la date d'aujourd'hui il y a 13 ans, cela revient faux, mais si je remonte au 31 octobre il y a 13 ans cela fonctionne. – Bobby

Répondre

4

Il est préférable de comparer les dates et les plages de dates plutôt que les chaînes.

En supposant que vous obtenez des chaînes pour les pièces d'anniversaire:

bmonth = self.get_argument('bmonth', '') 
bday = self.get_argument('bday', '') 
byear = self.get_argument('byear', '') 

bd = datetime.datetime(int(byear), int(bmonth), int(bday)) 
min_age = datetime.timedelta(weeks = 52*13) 
if datetime.datetime.now() - bd < min_age: 
    response = tornado.escape.json_encode({"error":"true", "msg": 
        "You must be 13 years of age or older to join uSocial'N"}) 
+0

Cela fait ressortir le même résultat. – Bobby

+0

Ok, donc je l'ai eu en faisant 'bd = datetime.datetime (int (parear), int (bmonth), int (bday)) min_age = datetime.timedelta (jours = 4748.12) si datetime.datetime.now() - bd <= min_age: ' – Bobby

+1

Première réponse acceptée, cool! :) – egor83