CSV / Excel के लिए सर्वश्रेष्ठ टाइमस्टैम्प प्रारूप?


110

मैं एक CSV फ़ाइल लिख रहा हूँ। मुझे टाइमस्टैम्प लिखने की ज़रूरत है जो कम से कम दूसरे तक सटीक हो, और अधिमानतः मिलीसेकंड तक। CSV फ़ाइल में टाइमस्टैम्प के लिए सबसे अच्छा प्रारूप क्या है ताकि उन्हें एक्सेल द्वारा न्यूनतम उपयोगकर्ता हस्तक्षेप के साथ सटीक और स्पष्ट रूप से पार्स किया जा सके?


आउटपुट बनाने के लिए आप किस भाषा का उपयोग कर रहे हैं?
पतरस

जवाबों:


104

दूसरी सटीकता के लिए, yyyy-MM-dd HH: mm: ss को चाल करना चाहिए।

मेरा मानना ​​है कि एक्सेल दूसरे के अंशों के साथ बहुत अच्छा नहीं है (COM ऑब्जेक्ट IIRC के साथ बातचीत करते समय उन्हें खो देता है)।


हाँ - मैं आपसे और फ्रेड्रिक से सहमत हूँ। यदि आप उन संदर्भों को खोद सकते हैं, तो मैं निश्चित रूप से आभारी रहूंगा। धन्यवाद!

18
रूबी का उपयोग करने वाले किसी के लिए strftime, समतुल्य तर्क स्ट्रिंग है"%Y-%m-%d %H:%M:%S"
ग्रेग मैथ्यू क्रॉसली

2
@nickf - .CSVकेवल एक पाठ फ़ाइल है। आप समय-सारणी या अन्य कुछ भी दिखा सकते हैं जिसे आप फ़ाइल को अल्पविराम से अलग सादे पाठ के रूप में लिखते हैं; क्या महत्वपूर्ण है जो अनुप्रयोग इसे पढ़ रहा होगा, और वह एप्लिकेशन पाठ की अपेक्षा कैसे कर रहा है। यहां कांग्रेस के पुस्तकालय से सीएसवी मानक के लिए प्रलेखन है । विशेष रूप से तिथियों को संग्रहीत करने का कोई निर्धारित तरीका नहीं है। इसके अलावा RFC-4180 और CSV-1203 //creativyst.com/Doc/Articles/CSV/CSV01.htm)।
ashleedawg

C # / IronPython File.GetLastWriteTimeUtc ("your-path-here")। ToString ("yyyy-% m-% d% H:% MM:% ss"
Konrads

अजगर में स्ट्रैप्टम () के साथ प्रारूप भी "%Y-%m-%d %H:%M:%S"रूबी के समान होगा ।
rcronk

18

"Yyyy-MM-dd HH: mm: ss" का उपयोग करने का पहले का सुझाव ठीक है, हालांकि मेरा मानना ​​है कि एक्सेल के मुकाबले इससे भी बेहतर समय है। मुझे यह पोस्ट मिली विश्वसनीय लगती है (धागे का अनुसरण करें और आप बहुत सारे अंकगणित और एक्सेल के साथ प्रयोग करते हुए देखेंगे), और यदि यह सही है, तो आपके पास अपने मिलीसेकंड होंगे। आप अंत में दशमलव स्थानों पर सौदा कर सकते हैं, अर्थात "yyyy-mm-dd hh: mm: ss.000"।

आपको इस बात की जानकारी होनी चाहिए कि एक्सेल आवश्यक रूप से डेटा (मानव हस्तक्षेप के बिना) को इस तरह से प्रारूपित नहीं कर सकता है कि आप वह सब देख पाएंगे। काम पर अपने कंप्यूटर पर, जब मैंने "yyyy-mm-dd hh: mm: ss.000" डेटा (नोटपैड का उपयोग करके हाथ से) के साथ एक CSV स्थापित किया, तो मुझे सेल और "m" में "mm: ss.0" मिलता है। / d / yyyy hh: mm: ss AM / PM "सूत्र पट्टी में।

अधिकतम जानकारी के लिए [1] मानव हस्तक्षेप के बिना कोशिकाओं में अवगत कराया, आप अपने टाइमस्टैम्प को एक तिथि भाग और एक समय भाग में विभाजित करना चाह सकते हैं, समय भाग केवल दूसरे के साथ। यह मुझे ऐसा लगता है जैसे एक्सेल आपको किसी भी दिए गए सेल में अधिकतम तीन दृश्यमान "स्तरों" (जहां एक सेकंड का फ्रैक्शन उनका अपना स्तर है) देना चाहता है, और आप सात चाहते हैं: साल, महीने, दिन, घंटे, मिनट, सेकंड। और एक सेकंड के अंश।

या, यदि आपको मानव-पठनीय होने के लिए टाइमस्टैम्प की आवश्यकता नहीं है, लेकिन आप चाहते हैं कि यह यथासंभव सटीक हो, तो आप बस एक बड़ी संख्या को स्टोर करना पसंद कर सकते हैं (आंतरिक रूप से, एक्सेल सिर्फ दिनों की संख्या का उपयोग कर रहा है, जिसमें आंशिक दिन भी शामिल हैं , एक "युग" तिथि के बाद से)।


[१] वह है, संख्यात्मक सूचना। यदि आप अधिक से अधिक जानकारी देखना चाहते हैं, लेकिन इसके साथ गणना करने के बारे में परवाह नहीं करते हैं, तो आप कुछ प्रारूप बना सकते हैं जो एक्सेल निश्चित रूप से एक स्ट्रिंग के रूप में पार्स करेगा, और इस तरह अकेले छोड़ देगा; जैसे "yyyymmdd.hhmmss.000"।


14

"yyyy-MM-dd hh: mm: ss.000" प्रारूप सभी स्थानों में काम नहीं करता है। कुछ के लिए (कम से कम डेनिश) "yyyy-MM-dd hh: mm: ss, 000" बेहतर काम करेगा।


2
अजीब तरह से एक्सेल 2010 में तारीखों का पता नहीं चलता है जब मिलीसेकंड हिस्सा 000 होता है। कोई भी अन्य करेगा।
डियो एफ

4

मेरा मानना ​​है कि यदि आपने doubleडेटा प्रकार का उपयोग किया है , तो एक्सेल में पुनः गणना ठीक काम करेगी।


मैंने बस कोशिश की और यह वास्तव में अच्छी तरह से काम करता है। बस एक्सेल को बताना होगा कि उस विशेष कॉलम का प्रारूप दिनांक / समय है। यह CSV से स्वचालित रूप से इसका पता नहीं लगाएगा क्योंकि यह स्पष्ट रूप से डेटा का वर्णन नहीं करता है
पीटर Peráč

3

नियंत्रण कक्ष में भाषा सेटिंग्स पर जाएं, फिर प्रारूप विकल्प, एक स्थान का चयन करें और डिफ़ॉल्ट रूप से विंडोज द्वारा उपयोग किए गए चुने हुए स्थान के लिए वास्तविक तिथि प्रारूप देखें। हां, वह टाइमस्टैम्प प्रारूप स्थानीय-संवेदनशील है। CSV को पार्स करते समय Excel उन प्रारूपों का उपयोग करता है।

इससे भी आगे, यदि स्थानीय ASCII से अधिक वर्णों का उपयोग करता है, तो आपको CSV को इसी पूर्व-यूनिकोड विंडोज "ANSI" कोडपेज, जैसे CP1251 में फेंकना होगा। एक्सेल UTF-8 को स्वीकार नहीं करेगा।


1

टाइमज़ोन के लिए के रूप में। मुझे यूटीसी ऑफसेट को यूटीसी से सेकंड के रूप में संग्रहीत करना है जिस तरह से एक्सेल / ओपनऑफिस में फार्मूले अंततः डेटेटाइम को स्थानीय कर सकते हैं। मैंने पाया कि किसी भी संख्या को संग्रहीत करने की तुलना में यह आसान है जिसके सामने 0 है। -0900 किसी भी स्प्रेडशीट प्रणाली में अच्छी तरह से पार्स नहीं किया और लोगों को करने के लिए प्रशिक्षित करना लगभग असंभव था।


1

"yyyy-mm-dd hh: mm: ss.000" प्रारूप सभी स्थानों में काम नहीं करता है। कुछ के लिए (कम से कम डेनिश) "yyyy-mm-dd hh: mm: ss, 000" बेहतर काम करेगा।

के रूप में user662894 द्वारा उत्तर दिया गया।

मैं जोड़ना चाहता हूं: एसक्यूएल सर्वर के डेटाइम 2 डेटाटाइप से, माइक्रोसेकंड प्राप्त करने का प्रयास न करें: एक्सेल 3 से अधिक अंश सेकंड (यानी मिलीसेकंड) को संभाल नहीं सकता है।

तो "yyyy-mm-dd hh: mm: ss.000000" काम नहीं करेगा, और जब एक्सेल को इस तरह के स्ट्रिंग (CSV फ़ाइल से) खिलाया जाता है, तो यह ट्रंकेशन के बजाय राउंडिंग करेगा ।

यह ठीक हो सकता है सिवाय इसके कि जब माइक्रोसेकंड प्रिसेंस मायने रखता है, तो जिस स्थिति में आप स्वत: डेटाटाइप मान्यता को ट्रिगर नहीं कर रहे हैं, लेकिन स्ट्रिंग को स्ट्रिंग के रूप में रखना बेहतर है ...


0

मुझे लगता है कि आईएसओ प्रारूप एक अच्छा विचार है। ( विकिपीडिया लेख , समय की जानकारी के साथ भी)


1
(डाउनवोट; वास्तव में, नहीं, एक्सेल उस प्रारूप को नहीं पहचानता है)
डग

1
@Doug मैंने इसे सत्यापित करने के लिए सिर्फ एक परीक्षण चलाया: Office 2010 में ठीक काम करता है, अंग्रेजी संस्करण, मेरी दोनों स्थानीय सेटिंग्स (स्वीडिश, जो तारीखों के लिए आईएसओ प्रारूप और यूएस अंग्रेजी का उपयोग करने के लिए होता है) के साथ कोशिश की। ब्याज से बाहर: यह आपके लिए किस माहौल में विफल रहा? मुझे कम से कम आश्चर्य नहीं है कि यह कुछ के लिए काम करता है और कुछ के लिए विफल रहता है: एक्सेल वास्तव में मेरे अनुभव में स्थिरता का आश्चर्य नहीं है ...
फ्रेड्रिक मोर्क

1
यह निश्चित रूप से OSX के लिए कार्यालय 2012 में काम नहीं करता है। मेरे परीक्षण में पहचान करने वाला एकमात्र 'देशी' प्रारूप एक्सेल एमएम / डीडी / वाईवाईवाईएचएच: एमएम: एसएस था; बाकी सब कुछ बस पाठ के रूप में माना जाता था।
डग

1
मुझे यह प्रश्न करने के बाद पता चला कि एक्सेल ने सीएसवी में आईएसओ प्रारूप तिथियों को नहीं पहचाना। IMO, कि Excel में एक बग है।
बिल्वपत्र

2
वह @Patrick हो सकती है। 2009 में वापस परीक्षण करना थोड़ा कठिन था ;-)
फ्रेड्रिक मोर्क

0

MM / dd / yyyy hh की कोशिश करें: mm: ss एक प्रारूप।

XML फ़ाइल बनाने के लिए जावा कोड।

xmlResponse.append ("mydate>")।

public String formatDate(Date date, String format)
{
    String dateString = "";
    if(null != date)
    {
        SimpleDateFormat dateFormat = new SimpleDateFormat(format);
        dateString = dateFormat.format(date);
    }
    return dateString;
}

0

तो, अजीब तरह से एक्सेल एक सीएसवी तिथि को अलग-अलग तरीकों से आयात करता है। और , सीएसवी फ़ाइल में उपयोग किए गए प्रारूप के आधार पर उन्हें अलग-अलग प्रदर्शित करता है। दुर्भाग्य से आईएसओ 8061 प्रारूप एक स्ट्रिंग के रूप में आता है। जो आपको संभवतः तारीख को स्वयं को पुन: स्वरूपित करने से रोकता है।

सभी लोग एक तारीख के रूप में आते हैं ... पूरी जानकारी रखते हैं ... लेकिन वे अलग-अलग प्रारूपित करते हैं ... यदि आपको यह पसंद नहीं है तो आप एक्सेल में कॉलम के लिए एक नया प्रारूप चुन सकते हैं और यह काम करेगा। (नोट: आप यह बता सकते हैं कि यह वैध तिथि / समय के रूप में आया है क्योंकि यह सही होगा ... यदि यह एक स्ट्रिंग के रूप में आता है तो यह औचित्य छोड़ देगा)

यहां मेरे द्वारा परीक्षण किए गए प्रारूप हैं:

"yyyy-MM-dd" एक्सेल में खोले जाने पर निश्चित रूप से प्रदर्शित होता है। ("MM / dd / yyyy" भी काम करता है)

"yyyy-MM-dd HH: mm: ss" डिफ़ॉल्ट प्रदर्शन प्रारूप "MM / dd / yyyy HH: mm" है (दिनांक और समय w / आउट सेकंड)

"yyyy-MM-dd HH: mm: ss.fff" डिफ़ॉल्ट प्रदर्शन प्रारूप "HH: mm: ss" है (समय केवल w / सेकंड)


-1

इस प्रारूप में डेटाइम कॉलम के साथ एक सीएसवी फ़ाइल दी गई है: yyyy-mm-dd hh: mm: ss

Excel इसे इस प्रारूप में दिखाता है: dd / mm / yyyy hh: mm

उदा। 2020-05-22 16:40:55 22/05/2020 16:40 के रूप में दिखाता है

यह स्पष्ट रूप से विंडोज में चयनित लघु तिथि और लघु समय प्रारूप द्वारा निर्धारित किया जाता है; उदाहरण के लिए, अगर मैं विंडोज में yyyy-mm-dd में शॉर्ट डेट फॉर्मेट को बदलता हूं, तो एक्सेल 2020-05-22 16:40 दिखाता है।

वार्षिक रूप से, मुझे एक्सेल को स्वचालित रूप से सेकंड दिखाने का कोई तरीका नहीं मिल सकता है (मुझे एक्सेल में कॉलम को मैन्युअल रूप से प्रारूपित करना होगा)। लेकिन अगर csv फ़ाइल में hh: mm: ss फॉरमेट (जैसे 16:40:55) में टाइम कॉलम शामिल है, तो यह एक्सेल में सेकंड सहित शो होता है।

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