MONTHS = ['January', 'February', 'Match', 'April', 'May', 'June',
      'July', 'August', 'September', 'October', 'November', 'December']
def date_convert(s):


    y = s[:4]
    m = int(s[5:-3])
    d = s[8:]
    if m < 10:
        nm = int(m[1:])
        month_name = MONTHS[nm - 1]
    else:
        month_name = MONTHS[m - 1]

    result= ??????
    return result


s = '2000/06/24'
r = date_convert(s)
print(r)

Je travaille sur la vue de l'examen final (python 3.0 +), et j'ai pratiqué toute la journée. Je ne sais tout à coup pas comment mettre mois_nom a, y ensemble comme chaîne, utilisez 'result' (result = ???). puis le remettre dans le programme principal. Voici le résultat dont j'ai besoin: convertir 2000/06/24 au 24 juin 2000. Mon cerveau ne fonctionne pas maintenant, s'il vous plaît, quelqu'un m'aide. Merci beaucoup. Je ne peux utiliser aucune fonction intégrée. plaît, aidez-moi à assembler quoi que ce soit sous forme de chaîne. Merci encore.

-2
aabbbbcccc 9 août 2016 à 09:31

3 réponses

Meilleure réponse
MONTHS = ['January', 'February', 'Match', 'April', 'May', 'June',
      'July', 'August', 'September', 'October', 'November', 'December']
def date_convert(s):
    y = s[:4]
    m = int(s[5:-3])
    d = s[8:]
    month_name = MONTHS[m-1]

result= month_name + ' ' + d + ' '  + y
return result
s = '2000/06/24'
r = date_convert(s)
print r

J'ai fait en python 2 juste changer la fonction d'impression

0
Subramanya Chakravarthy 9 août 2016 à 07:02

Habituellement, vous n'analysez / reformatez / convertissez pas les dates en Python manuellement. Il existe de nombreuses fonctions magnifiques et même des modules pour cela. Le problème est que le processus de conversion de date peut sembler simple est compliqué et sujet aux erreurs. C'est pourquoi il n'est pas réimplémenté à chaque fois, mais implémenté avec autant de détails que possible dans les modules de base Python (dans datetime tout d'abord).

Utilisez strptime pour analyser la date et strftime pour formater la date:

>>> import datetime
>>> s = datetime.datetime.strptime("2000/06/24", "%Y/%m/%d")
>>> print s.strftime('%B %d %Y')

Les deux fonctions prennent en charge des caractères de mise en forme spéciaux tels que %Y et %m:

%Y  Year with century as a decimal number.
%m  Month as a decimal number [01,12].
%d  Day of the month as a decimal number [01,31].
%B  Locale’s full month name.

Vous pouvez en savoir plus ici:

Veuillez également vérifier cette question, qu'elle est très proche de la vôtre pour des réponses supplémentaires:

Si c'est un exercice et que vous devez implémenter la fonction de conversion par vous-même, c'est bien aussi. Votre implémentation est presque correcte mais vous avez manqué quelques points:

def date_convert(s):
    "Manual date conversion"

    y = s[:4]
    m = int(s[5:-3])
    d = s[8:]
    month_name = MONTHS[m - 1]
    return "%s %s, %s" % (month_name, d, y) 

Vous n'avez pas besoin de if dans votre fonction. Et vous n'avez pas besoin de deux conversions int, vous n'avez besoin que de la première.

Vous pouvez écrire la même chose plus brièvement:

def date_convert(s):
    "Manual date conversion"

    return "%s %s, %s" % (MONTHS[int(s[5:-3])-1], s[8:], s[:4]) 
0
Community 23 mai 2017 à 12:08

Essaye ça:

from datetime import datetime

d = "2000/06/24"
date_obj = datetime.strptime(d, "%Y/%m/%d")
formatted_date = datetime.strftime(date_obj, "%B %d %Y")
print(formatted_date)

Vous pouvez donc faire de d une variable à passer comme argument dans la fonction que vous utilisez.

strptime(): is used to convert the string of the date to a date object.
strftime(): is used to convert the date object to string.
0
Prateek 9 août 2016 à 07:00