डेटटाइम से तिथि फ़ील्ड की गणना डेटटाइम .ate.today () से करें?


10

मैं उस टूल के हिस्से पर काम कर रहा हूं जो आर्कटिक का उपयोग करेगा। कलकत्तेफिल्ड_मेंडिशन को टेबल में करंट डेट जोड़ने के लिए। मैं इंटरवेब पर दूर-दूर तक भटक गया हूं और इस मुद्दे का समाधान नहीं ढूंढ सकता।

इस कोड का उपयोग करते समय, मुझे "12:00:00 AM" मान मिलता है

    input = r'C:\GIS\CARGIS\SHAPES.gdb\CRASH_ON_2013'
    today = datetime.date.today()
    dte = today.strftime('%m/%d/%Y')
    arcpy.CalculateField_management(input,"DTCARXTRCT",dte,"PYTHON")

इस कोड का उपयोग करते समय, मुझे "10/07/2014" की तारीख से "06/19/1905" मूल्य मिलता है।

    input = r'C:\GIS\CARGIS\SHAPES.gdb\CRASH_ON_2013'
    today = datetime.date.today()
    dte = str(today)
    arcpy.CalculateField_management(input,"DTCARXTRCT",dte,"PYTHON")

मैं क्या गलत कर रहा हूँ पर कोई विचार? मैं अपडेट कर्सर का उपयोग करने से बचना चाहता हूं, लेकिन यदि यह अंतिम विकल्प है तो ऐसा करेंगे।


ऐसा प्रतीत होता है कि इस कोड का पायथन भाग सही तरीके से तिथि के साथ काम कर रहा है। लेकिन मुझे लगता है कि समस्या कोड के आर्कपी भाग के साथ है। "PYTHON" के बजाय "VB" आज़माएँ और देखें कि क्या यह फ़ील्ड में सही मान को अद्यतन करता है।
F_Kellner

इससे समस्या का समाधान नहीं हुआ, लेकिन 12:00:54 AM पर प्रदर्शित मूल्य को बदलने का अजीब परिणाम था।
फतह एनालिटिक्स

जवाबों:


10

एक अद्यतन कर्सर समय के 100% क्षेत्र कैलकुलेटर का प्रदर्शन करेगा।

आपको इसे एक अभिव्यक्ति के रूप में लिखना होगा:

import arcpy, datetime

fc = r'C:\GIS\CARGIS\SHAPES.gdb\CRASH_ON_2013'
field = "DTCARXTRCT"
exp = '''def add_date():
  import time
  return time.strftime("%Y/%m/%d")'''

arcpy.CalculateField_management(fc, field, 'add_date()',
                                'PYTHON', exp)
print 'done'

datetime.date.today () फ़ील्ड कैलकुलेटर में काम नहीं किया, स्ट्रैफ़्टाइम पर स्विच किया।

या, यदि आप इसे बेहतर तरीके से करना चाहते हैं जहां आप अपने स्वयं के चर खिला सकते हैं, तो एक कर्सर का उपयोग करें:

import arcpy, datetime

fc = r'C:\GIS\CARGIS\SHAPES.gdb\CRASH_ON_2013'
field = "DTCARXTRCT"
with arcpy.da.UpdateCursor(fc, [field]) as rows:
    for row in rows:
        rows.updateRow([datetime.date.today()])
print 'done'

मैंने इन दोनों का परीक्षण किया और वे महान काम करते हैं। धन्यवाद! एक साइड नोट पर, मैं अपडेट कर्सर का उपयोग नहीं करना चाहता, क्योंकि इसके लिए कुछ और लिखने की आवश्यकता है जो अपेक्षाकृत सरल होना चाहिए। यह हो सकता है कि मैं अजगर के लिए नया हूं और फ़ंक्शन की उपयोगिता को नहीं समझता। पैक किए गए gp टूल का उपयोग करने पर इसके चेहरे पर कर्सर का उपयोग करने से अधिक समझ में आता है। विचार?
फतह एनालिटिक्स

2
यह पूरी तरह से समझ में आता है। जब मैं पहली बार पायथन से शुरुआत कर रहा था, तब मुझे भी श्रापियों का डर था। हालाँकि, जैसे-जैसे आप पायथन के साथ अधिक सहज होते जाते हैं, मुझे लगता है कि आप पाएंगे कि श्रापकर्ता बहुत अधिक लचीले हो गए हैं। इसके अलावा, जैसा कि मैंने अपने मूल उत्तर में उल्लेख किया है, श्रापियों का प्रदर्शन बेहतर है। जिस काउंटी में मैं काम करता था, वहां जीआईएस कंसल्टेंट ने बहुत लंबी प्रक्रिया के लिए एक स्क्रिप्ट लिखी थी, जिसमें कई बार फील्ड कैलकुलेटर का इस्तेमाल किया गया था और इसे चलाने में 2 घंटे से ज्यादा का समय लगा था। जब मैं पायथन के साथ बेहतर हो गया, तो मैंने स्क्रिप्ट को फिर से लिखा और फ़ील्ड कैल्क के बजाय कर्सर का इस्तेमाल किया और यह 15 मिनट से कम समय में चला।
crmackey

0

प्रयोग करके देखें:

time.strftime("%Y/%m/%d")

निश्चित नहीं है कि इस हिस्से का उपयोग करके कोड को कहां संशोधित किया जाए। क्या आप पूरे कोड को दिखाने के लिए अपनी पोस्ट को संपादित कर सकते हैं?
फतह एनालिटिक्स

इस पंक्ति को ऊपर दिए गए उत्तर में शामिल किया गया है
डेट्रोइट_एचसी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.