¿Convertir el valor de fecha de ArcGIS a lectura de cadena en formato mm / dd / aaaa usando ArcPy?

8

Estoy escribiendo un script de herramienta arcpy en ArcGIS 10.0. En una clase de entidad fGDB, tengo un campo de tipo Fecha. Entiendo que los valores en el campo Fecha se almacenan como fechas enteras largas, pero se muestran en formato mm / dd / aaa en la tabla. Lo que quiero hacer es capturar el valor de la fecha entera como una cadena que muestra la fecha en formato mm / dd / aaaa. ¿Cómo hago esto?

Hay muchos ejemplos de cómo convertir una cadena de fecha / hora en un objeto / valor de fecha, pero no al revés. Estoy agregando características de una clase de entidad con muchos campos, incluido un campo de fecha, en un fc de esquema estándar (que no puedo cambiar) que tiene pocos campos. Para guardar muchos de los atributos técnicos en la entrada, debo volcarlo todo en un campo de texto controlado por el usuario que se define en el objetivo. Los datos de fecha de la entrada son uno de esos datos que necesito guardar, de ahí la necesidad de convertir la fecha en una cadena.

Es probable que me falte una solución bastante fácil, pero en este momento estoy perdido. Agradezco cualquier ayuda que se me presente.

celta
fuente
Han pasado meses, ¿has resuelto tu problema?
RK
1
@RK - Lamento mucho haber dejado a los interesados ​​pendientes de esto. Perdí el rastro. De todos modos, sí, la respuesta de blah238 a continuación funcionó bien. El script en particular en el que estaba trabajando se modificó posteriormente de una manera que eliminó la necesidad de la conversión de fecha, pero he usado esta solución varias veces desde entonces en otros scripts. Gracias, RK, por preguntar, y gracias blah238 por tu ayuda.
celticflute

Respuestas:

19

Los cursores GP leen los valores de fecha como datetimeobjetos, por lo que puede usarlo datetime.strftime()para formatearlo como desee, o datetime.ctime()para formatearlo como el formato predeterminado ( %a %b %d %H:%M:%S %Y).

Aquí hay un ejemplo usando mm/dd/yyyy:

import arcpy
from datetime import datetime
fc = r"C:\GISData\test.gdb\atlantic_hurricanes_2000"
rows = arcpy.SearchCursor(fc)
for row in rows:
    datetimeVal = row.getValue("Date_Time")
    formattedTime = datetime.strftime(datetimeVal, "%m/%d/%Y")
    print formattedTime

Para los significados de los distintos códigos de tiempo de formato ver el comportamiento strftime .

blah238
fuente