IPhone पर दिनांक स्ट्रिंग में मिलिसेकंड के लिए मैं किस प्रारूप स्ट्रिंग का उपयोग करूं?


100

मुझे एक प्रारूप में स्ट्रिंग को पार्स करने की आवश्यकता है जिसमें मिलीसेकंड शामिल हैं। सही दिनांक मान प्राप्त करने के लिए मैं किस प्रारूप स्ट्रिंग का उपयोग करता हूँ?

उदाहरण के लिए, मान लें कि मेरे पास निम्नलिखित मूल्य के साथ एक स्ट्रिंग है: "2011-06-23T13: 13: 00.000"

निम्नलिखित कोड में मैं अपने NSDateFormatter को किस प्रारूप में पास करूं?

NSString *dateValue = @"2011-06-23T13:13:00.000";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSString *formatString = @"yyyy-MM-dd'T'HH:mm:ss.???";
[formatter setDateFormat:formatString];
NSDate *date = [formatter dateFromString:dateValue];

मैं इसके स्थान पर क्या उपयोग करूं ??? उपरोक्त कोड में?

जवाबों:


211

यह SSSप्रति, यूनिकोड लोकेल डेटा मार्कअप लैंग्वेज कल्पना

"yyyy-MM-dd'T'HH:mm:ss.SSS"

अधिक आम तौर पर, किसी भी संख्या के ऊपरी-मामले एस वर्णों का उपयोग करें ताकि भिन्न दशमलव के कई दशमलव स्थान दूसरे घटक में मिल सकें। (इसलिए ss.Sउदाहरण के लिए, दूसरे के निकटतम दसवें के लिए समय दिखाएगा।)


2
मैं सोच रहा था कि क्या आप जानते हैं कि मैं मिलीसेकंड का एक लीनियर पार्सिंग कैसे बना सकता हूं? दिनांक 6, 7 या कोई मिलीसेकंड भी हो सकता है। मैं नियमित अभिव्यक्तियों के साथ जा सकता था लेकिन मैं सोच रहा था कि क्या यह उचित प्रारूप स्ट्रिंग के साथ बॉक्स से बाहर किया जा सकता है।
Cyupa

इस तरह एस की अधिकतम संख्या तीन है, जैसे एसएसएस। यदि आप अधिक जोड़ते हैं तो आप सिर्फ 1415986217.544384 के समय IntervalSince1970 और .SSSSSS जैसे आप प्राप्त करते हैं। आप एक महान समाधान नहीं।
मल्हल

@Cyupa A मिलीसेकंड केवल एक सेकंड का 1/1000 है। 6 दशमलव स्थान माइक्रोसेकंड है, और 1 दशमलव स्थान निर्णायक है। - किसी भी संख्या में दशमलव के लिए मिलीसेकंड का उपयोग करना उतना ही गलत है जितना कि लाक्षणिक रूप से किसी चीज के लिए उपयोग करना; आप अभी भी कर सकते हैं, लेकिन यह शब्द का अर्थ बदल रहा है।
लिगलगिलफ


4

उदाहरण के लिए आपको अंत में 'S' का एक ही नंबर पास करना होगा। मेरी तिथि '2015-11-17T03: 36: 45.041503Z' थी जिसका इस्तेमाल मैंने 'yyyy-MM-dd'T'HH: mm: sSSSSSSSSz' में किया था। फॉर्मेटर, मेरा मतलब है कि 'एस' की संख्या 6 है क्योंकि तारीख में 6 अंक आ रहे हैं।


मिलीसेकंड के बजाय माइक्रोसेकंड में नैनोसेकंड प्राप्त करने के लिए क्या स्वरूपित किया जाएगा। मैंने 'yyyy-MM-dd'T'HH: mm: ss.SSSSSSz' और 'yyyy-MM-dd'T'HH: mm: ss.SSSSSSSSz' के साथ प्रयास किया है और यह काम नहीं करता है।
IndexOutOfDevelopersException

-1

SSSएक सेकंड के तीन दशमलव स्थानों के लिए उपयोग करें

"yyyy-MM-dd'T'HH:mm:ss.SSS"

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