J'ai deux méthodes que je suis en utilisant comme des balises personnalisées dans un moteur de template:Divers problèmes datetime Python
# Renders a <select> form field
def select_field(options, selected_item, field_name):
options = [(str(v),str(v)) for v in options]
html = ['<select name="%s">' % field_name]
for k,v in options:
tmp = '<option '
if k == selected_item:
tmp += 'selected '
tmp += 'value="%s">%s</option>' % (k,v)
html.append(tmp)
html.append('</select>')
return '\n'.join(html)
# Renders a collection of <select> fields for datetime values
def datetime_field(current_dt, field_name):
if current_dt == None:
current_dt = datetime.datetime.now()
day = select_field(range(1, 32), current_dt.day, field_name + "_day")
month = select_field(range(1, 13), current_dt.month, field_name + "_month")
year = select_field(range(datetime.datetime.now().year, datetime.datetime.now().year + 10), current_dt.year, field_name + "_year")
hour = select_field(range(1, 13), current_dt.hour, field_name + "_hour")
minute = select_field(range(1, 60), current_dt.minute, field_name + "_minute")
period = select_field(['AM', 'PM'], 'AM', field_name + "_period")
return "\n".join([day, '/', month, '/', year, ' at ', hour, ':', minute, period])
Comme vous pouvez le voir dans les commentaires, je tente de générer sélectionner les champs pour la construction d'une valeur date et heure.
Ma première question est, comment faire pour que les plages du jour, du mois, de l'heure et des minutes utilisent deux chiffres? Par exemple, le code génère "1, 2, 3 ..." tandis que je voudrais "01, 02, 03". Ensuite, lorsque les champs sont générés, les valeurs du datetime fourni ne sont pas sélectionnées automatiquement, même si je demande à la méthode select_field d'ajouter un attribut "selected" lorsque la valeur est égale à la valeur du datetime fourni.
Enfin, comment puis-je obtenir l'identificateur de période de 12 heures (AM/PM) pour le datetime fourni? Pour le moment, je sélectionne simplement 'AM' par défaut, mais je voudrais fournir cette valeur à partir du datetime lui-même.
ce code était cool. ['AM', 'PM'] [current_dt.hour> = 12] – Merlin