mando codificador
¿Hay alguna manera de extraer el mes y el día usando isoformatos? Supongamos que la fecha de hoy es el 8 de marzo de 2013.
>>> d = datetime.date.today()
>>> d.month
3
>>> d.day
8
Quiero:
>>> d = datetime.date.today()
>>> d.month
03
>>> d.day
08
Puedo hacer esto escribiendo declaraciones if y concatenando un 0 inicial en caso de que el día o el mes sea un solo dígito, pero me preguntaba si había una forma automática de generar lo que quiero.
roland smith
Mira los tipos de esas propiedades:
In [1]: import datetime
In [2]: d = datetime.date.today()
In [3]: type(d.month)
Out[3]: <type 'int'>
In [4]: type(d.day)
Out[4]: <type 'int'>
Ambos son enteros. entonces no hay automático manera de hacer lo que quieres. Entonces, en sentido estricto, la respuesta a su pregunta es no.
Si desea ceros a la izquierda, tendrá que formatearlos de una forma u otra. Para eso tienes varias opciones:
In [5]: '{:02d}'.format(d.month)
Out[5]: '03'
In [6]: '%02d' % d.month
Out[6]: '03'
In [7]: d.strftime('%m')
Out[7]: '03'
In [8]: f'{d.month:02d}'
Out[8]: '03'
-
Gracias. Para aquellos que usan valores múltiples con numeración manual, solo asegúrese de agregar el número antes de “:02d”, por ejemplo: {0}/{1:02d}-{2:02d}_{3}.json’.format(othervalue , mes actual, día actual, otro valor2)
– Alex
28 de julio de 2017 a las 8:58
-
Solo para agregar otro método de formato para obtener una cadena cero rellena, puede usar el
zfill()
funcionar así:str(d.month).zfill(2)
– muón
1 de marzo de 2018 a las 4:22
-
fecha =’2019-09-15′ f’0{pd.to_datetime(fecha).mes}’
– Dheeraj
4 oct 2019 a las 14:00
-
Éste
f'{d.month:02d}'
es perfecto. Gracias !– Nicoolasen
1 de febrero a las 23:37
eduff
puede usar un formateador de cadenas para rellenar cualquier entero con ceros. Actúa como C printf
.
>>> d = datetime.date.today()
>>> '%02d' % d.month
'03'
Actualizado para py36: ¡Usa f-strings! En general int
s puedes usar el d
formateador y dígale explícitamente que complete con ceros:
>>> d = datetime.date.today()
>>> f"{d.month:02d}"
'07'
Pero datetime
s son especiales y vienen con formateadores especiales que ya tienen relleno cero:
>>> f"{d:%d}" # the day
'01'
>>> f"{d:%m}" # the month
'07'
-
en lugar de una página de libro de texto inflada, esta respuesta en realidad le da una sola línea de trabajo, felicitaciones
– usuario2667976
6 mayo 2018 a las 22:04
d.strftime('%m')
yd.strftime('%d')
Esto tiene que ser un duplicado.– carne_mecánica
19/03/2013 a las 20:10
Es un engaño — Pero debo decir que éste es más claro que el engaño.
– mgilson
19 de marzo de 2013 a las 20:13