2015-05-27 9 views
19

मेरे पास मेरे शीट के कॉलम में आईएसओ -8601 स्वरूपित तारों का एक गुच्छा है। मैं उन तारीखों के रूप में व्यवहार करने के लिए Google शीट कैसे प्राप्त कर सकता हूं ताकि मैं उन पर गणित कर सकूं (उदाहरण के लिए दो कोशिकाओं के बीच मिनटों में अंतर)? मैंने बस =Date("2015-05-27T01:15:00.000Z") की कोशिश की लेकिन कोई खुशी नहीं। ऐसा करने का एक आसान तरीका होना चाहिए। कोई सलाह?आईएसओ -8601 स्ट्रिंग टू डेट Google शीट्स सेल

उत्तर

12

प्रयास करें इस

=CONCATENATE(TEXT(INDEX(SPLIT(SUBSTITUTE(A1,"Z",""),"T"),1),"yyyy-mm-dd")," ",TEXT(INDEX(SPLIT(SUBSTITUTE(A1,"Z",""),"T"),2),"hh:mm:ss")) 

कहाँ A1 आईएसओ 8601 स्वरूपित स्ट्रिंग या स्ट्रिंग के साथ ही एक सेल हो सकता है।

+1

हम्म। यह बिल्कुल "आसान" नहीं दिखता है, लेकिन मैं इसे एक भंवर दे दूंगा। मैं वास्तव में उम्मीद कर रहा था कि ऐसा करने के लिए पहले से ही एक समारोह था। –

+0

यह समाधान एक स्ट्रिंग देता है, दिनांक प्रकार नहीं @BobKuhar चाहता था। जब मैंने इसे '2016-07-26T11: 12: 06.711-0400' के आईएसओ 8601 समय स्ट्रिंग के साथ परीक्षण किया, तो परिणाम' 2016-07-26 11: 12: 06.711-0400' था। जीएमटी टाइम स्ट्रिंग के रूप में (टाइमज़ोन ऑफ़सेट के बिना), 2016-07-26T11: 12: 06.711Z' 2016-07-26 11: 12: 07' बन गया। यह समाधान सिर्फ आईएसओ 8601 स्ट्रिंग को दोबारा सुधारता है। –

+0

आपको "2016-07-26" और "11:12:07" तक इसे तोड़ने के लिए परिणाम को विभाजित करना होगा। इन दो कोशिकाओं को दिनांक और समय के रूप में स्वरूपित किया जाएगा। –

24

एक वास्तविक तिथि मूल्य है जो आप सामान्य संख्या स्वरूपण का उपयोग कर स्वरूपित कर सकते हैं प्राप्त करने के लिए ...

=DATEVALUE(MID(A1,1,10)) + TIMEVALUE(MID(A1,12,8))

जैसे।

╔═══╦══════════════════════╦════════════════════╗ 
║ ║   A   ║   B   ║ 
╠═══╬══════════════════════╬════════════════════╣ 
║ 1 ║ 2016-02-22T05:03:21Z ║ 2/22/16 5:03:21 AM ║ 
╚═══╩══════════════════════╩════════════════════╝ 
  • मान लिया गया timestamps UTC में हैं
  • उपेक्षा मिलीसेकंड (हालांकि आप आसानी से पर्याप्त जोड़ सकता है)

DATEVALUE() समारोह एक मूल्य में एक स्वरूपित दिनांक स्ट्रिंग बदल जाता है, और एक ही TIMEVALUE() करता है समय के लिए। अधिकांश स्प्रैडशीट्स में & बार एक संख्या द्वारा प्रतिनिधित्व किया जाता है जहां पूर्णांक भाग 1 जनवरी 1 9 00 से दिन होता है और दशमलव भाग उस दिन के अंश के रूप में होता है। उदाहरण के लिए, 11 जून 200 9 17:30 लगभग 39 9 75.72 9 17 है।

उपर्युक्त सूत्र दिनांक भाग और समय भाग को अलग से पार करता है, फिर उन्हें एक साथ जोड़ता है।

+0

यह समाधान अच्छा है। यह स्वीकार किए गए एक से बेहतर है। कम से कम यह एक संख्यात्मक दिनांक (समय) मान देता है, स्ट्रिंग नहीं। मैंने देखा है कि यदि एक टाइमज़ोन ऑफसेट दिया जाता है, तो इसे सिर्फ अनदेखा किया जाता है। साथ ही, स्ट्रिंग में वर्ण की स्थिति की धारणा इस समाधान को कई प्रतिस्थापन और विभाजित फ़ंक्शन कॉल की तुलना में कम और संभवतः तेज़ बनाता है। –

+1

आप अंत में केवल tz जोड़ सकते हैं। ... + (10/24) जहां 10 ऑफसेट – Sam

9

मैंने पाया यह बहुत सरल =SUM(SPLIT(A2,"TZ"))

स्वरूप yyyy-MM-dd HH:mm:ss.000 उपयोग करने के लिए फिर से आईएसओ 8601 के रूप में दिनांक मान को देखने के लिए।

+0

है यह समाधान खराब नहीं है। यह स्वीकार किए गए उत्तर में एक स्ट्रिंग के बजाय, अनुरोध के अनुसार एक संख्यात्मक दिनांक (समय) मान देता है। यह जीएमटी टाइमस्टैम्प के साथ सबसे अच्छा काम करता है, न कि टाइमज़ोन ऑफसेट वाले। अगर ऑफसेट दिया जाता है, तो यह समाधान "0" के समय का उपयोग करता है। यह समाधान चालाक और छोटा है, हालांकि [अन्य उत्तर] (/ a/36176351/543738) के रूप में सही नहीं है, लेकिन कई स्ट्रिंग फ़ंक्शन कॉल से बेहतर है। –

संबंधित मुद्दे