Chuyển đổi giá trị ngày ArcGIS sang đọc chuỗi ở định dạng mm / dd / yyyy bằng ArcPy?


8

Tôi đang viết một kịch bản công cụ Arcpy trong ArcGIS 10.0. Trong lớp tính năng fGDB, tôi có trường loại Ngày. Tôi tập hợp rằng các giá trị trong trường Ngày được lưu trữ dưới dạng ngày nguyên dài, nhưng chúng hiển thị ở định dạng mm / dd / yyy trong bảng. Những gì tôi muốn làm là nắm bắt giá trị ngày nguyên dưới dạng một chuỗi hiển thị ngày ở định dạng mm / dd / yyyy. Làm thế nào để tôi đi về điều này?

Có nhiều ví dụ về cách chuyển đổi chuỗi ngày / thời gian thành đối tượng / giá trị ngày nhưng không phải ngược lại. Tôi đang nối các tính năng từ một lớp đối tượng có nhiều trường, bao gồm trường ngày, vào fc lược đồ chuẩn (mà tôi không thể thay đổi) có ít trường. Để lưu rất nhiều thuộc tính kỹ thuật trong đầu vào, tôi phải kết xuất tất cả vào trường văn bản do người dùng kiểm soát bắt được xác định trong mục tiêu. Dữ liệu ngày từ đầu vào là một trong những dữ liệu tôi cần lưu, do đó cần phải chuyển đổi ngày thành chuỗi.

Có khả năng là một giải pháp khá dễ dàng mà tôi đang thiếu, nhưng hiện tại tôi đang bị thua lỗ. Tôi đánh giá cao bất kỳ sự giúp đỡ nào theo cách của tôi.


Đã được vài tháng, bạn đã giải quyết vấn đề của mình?
RK

1
@RK - Tôi rất xin lỗi vì đã để những người quan tâm treo trên cái này. Tôi lạc đường. Dù sao, vâng, câu trả lời của blah238 dưới đây chỉ hoạt động tốt. Tập lệnh cụ thể mà tôi đang thực hiện sau đó đã được thay đổi theo cách loại bỏ nhu cầu chuyển đổi ngày, nhưng tôi đã sử dụng giải pháp này nhiều lần kể từ các tập lệnh khác. Cảm ơn, RK, đã hỏi và cảm ơn bạn blah238 vì sự giúp đỡ của bạn.
celticflute

Câu trả lời:


19

Các con trỏ GP đọc các giá trị ngày dưới dạng datetimeđối tượng, vì vậy bạn có thể sử dụng datetime.strftime()để định dạng nó theo ý muốn hoặc datetime.ctime()định dạng nó dưới định dạng mặc định ( %a %b %d %H:%M:%S %Y).

Đây là một ví dụ sử dụng 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

Đối với những ý nghĩa của thời gian khác nhau mã định dạng nhìn thấy hành vi strftime .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.