Convertendo o valor da data do ArcGIS em leitura de string no formato mm / dd / aaaa usando o ArcPy?

8

Estou escrevendo um script de ferramenta arcpy no ArcGIS 10.0. Em uma classe de recurso do fGDB, tenho um campo do tipo Data. Entendo que os valores no campo Data são armazenados como datas inteiras longas, mas são exibidos no formato mm / dd / aaaa na tabela. O que eu quero fazer é capturar o valor inteiro da data como uma string mostrando a data no formato mm / dd / aaaa. Como faço para fazer isso?

Existem muitos exemplos de como converter uma string de data / hora em um objeto / valor de data, mas não vice-versa. Estou anexando recursos de uma classe de recursos com muitos campos, incluindo um campo de data, em um esquema padrão fc (que não posso alterar) que possui poucos campos. Para salvar muitos atributos técnicos na entrada, devo despejar tudo em um campo de texto abrangente e controlado pelo usuário, definido no destino. Os dados da data da entrada são um desses dados que eu preciso salvar, daí a necessidade de converter a data em uma string.

Provavelmente, estou perdendo uma solução bastante fácil, mas no momento estou perdida. Agradeço qualquer ajuda que aparecer no meu caminho.

flauta celta
fonte
Já faz meses, você resolveu o seu problema?
RK
1
@RK - Sinto muito por ter deixado os interessados ​​pendurados neste. Eu perdi a noção. Enfim, sim, a resposta de blah238 abaixo funcionou bem. O script específico no qual eu estava trabalhando foi posteriormente alterado de uma maneira que eliminou a necessidade de conversão de datas, mas eu usei essa solução várias vezes desde então em outros scripts. Obrigado, RK, por perguntar, e obrigado blah238 pela ajuda.
Celticflute

Respostas:

19

Os cursores do GP leem os valores da data como datetimeobjetos, para que você possa datetime.strftime()formatá-lo como quiser ou datetime.ctime()como o formato padrão ( %a %b %d %H:%M:%S %Y).

Aqui está um exemplo 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 obter os significados dos vários códigos de formatação de hora, consulte comportamento do horário de saída .

blah238
fonte