2009-04-29 14 views
80

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

+0

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

उत्तर

70

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

मेरा मानना ​​है कि एक्सेल एक दूसरे के अंशों के साथ बहुत अच्छा नहीं है (COM ऑब्जेक्ट आईआईआरसी के साथ बातचीत करते समय उन्हें खो देता है - मैं एक संदर्भ ढूंढने और इसे यहां पोस्ट करने का प्रयास करूंगा)।

+0

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

+11

कोई विचार है कि आप टाइमज़ोन कैसे दिखाएंगे? – nickf

+8

रूबी के ['strftime'] (http://apidock.com/ruby/DateTime/strftime) का उपयोग करने वाले किसी भी व्यक्ति के लिए, बराबर तर्क स्ट्रिंग' "% वाई-% एम-% डी% एच:% एम:% एस" ' –

2

मुझे विश्वास है कि अगर आपने double डेटा प्रकार का उपयोग किया है, तो Excel में पुन: गणना ठीक काम करेगी।

+0

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

0

मुझे लगता है कि ISO-format एक अच्छा विचार है। (Wikipedia article, समय की जानकारी के साथ भी)

+0

सहमत; यह सबसे अच्छा शर्त प्रतीत होता है। –

+1

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

+1

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

11

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

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

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

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


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

9

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

+0

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

1

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

1

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

और भी, यदि लोकेल ASCII से परे वर्णों का उपयोग करता है, तो आपको संबंधित प्री-यूनिकोड विंडोज "एएनएसआई" कोडपृष्ठ में सीएसवी को उत्सर्जित करना होगा, उदा। CP1251। एक्सेल यूटीएफ -8 स्वीकार नहीं करेगा।

0

एमएम/डीडी/yyyy एचएच का प्रयास करें: मिमी: एक प्रारूप है।

जावा कोड बनाने के लिए जावा कोड। ।

xmlResponse.append ("mydate>") संलग्न (this.formatDate (resultSet.getTimestamp ("तिथि"), "MM/DD/YYYY HH: mm: ss एक"))। संलग्न ("");

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

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

उपयोगकर्ता662894 द्वारा उत्तर दिया गया।

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

तो "yyyy-mm-dd hh: mm: ss.000000" काम नहीं करेगा, और जब एक्सेल (सीएसवी फ़ाइल से) स्ट्रिंग इस तरह तंग आ गया है, यह गोलाई बल्कि काट-छांट से प्रदर्शन करेंगे

इस छोड़कर जब माइक्रोसेकंड परिशुद्धता मामलों, जिस स्थिति में आप नहीं एक स्वचालित डेटाप्रकार मान्यता ट्रिगर लेकिन सिर्फ स्ट्रिंग के रूप में स्ट्रिंग रखने से बेहतर कर रहे हैं ठीक हो सकता है ...

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