obtener - strftime python
Formateo de fechas proporcionadas como cadenas en Django (2)
Esto no se relaciona con la etiqueta de Django, pero el código strptime es:
d = strptime("2009-06-11 17:02:09+0000", "%Y-%m-%d %H:%M:%S+0000")
Tenga en cuenta que está abandonando la información de la zona horaria.
En mi aplicación Django obtengo los tiempos de un servicio web, proporcionado como una cadena, que uso en mis plantillas:
{{date.string}}
Esto me proporciona una fecha como:
2009-06-11 17:02:09+0000
Estos son obviamente un poco feos, y me gustaría presentarlos en un buen formato para mis usuarios. Django tiene un gran formateador de datos incorporado, que haría exactamente lo que yo quería:
{{ value|date:"D d M Y" }}
Sin embargo, esto espera que el valor se proporcione como un objeto de fecha y no como una cadena. Entonces no puedo formatearlo usando esto. Después de buscar aquí en StackOverflow, pittons strptime parece hacer lo que quiero, pero siendo bastante nuevo en Python, me preguntaba si alguien podría encontrar una manera más fácil de formatear la fecha usando cadenas, sin tener que recurrir a escribir un nuevo strptime personalizado. etiqueta de plantilla?
Probablemente sea mejor que analice la cadena recibida desde el servicio web en su código de vista, y luego pase el datetime.date (o cadena) a la plantilla para su visualización. El espíritu de las plantillas de Django es que se debe hacer muy poco trabajo de codificación allí; son solo para presentación, y es por eso que hacen todo lo posible para evitar que escriba código Python incrustado en HTML.
Algo como:
from datetime import datetime
from django.shortcuts import render_to_response
def my_view(request):
ws_date_as_string = ... get the webservice date
the_date = datetime.strptime(ws_date, "%Y-%m-%d %H:%M:%S+0000")
return render_to_response(''my_template.html'', {''date'':the_date})
Como señala Matthew, esto reduce la zona horaria. Si desea conservar el desplazamiento desde GMT, intente utilizar la excelente biblioteca de dateutils de terceros, que maneja sin problemas las fechas de análisis en múltiples formatos, con zonas horarias, sin tener que proporcionar una plantilla de formato de tiempo como strptime.