NSDate को वर्ष, महीने, दिन और घंटे, मिनट, सेकंड दोनों के लिए विशेष शैलियों में स्वरूपित करना


132

मुझे मूल रूप से वर्तमान तिथि और समय अलग-अलग प्राप्त करने की आवश्यकता है:

2009-04-26 
11:06:54

नीचे दिया गया कोड, उसी विषय पर एक अन्य प्रश्न से उत्पन्न होता है

अब: | 2009-06-01 23:18:23 +0100 | 
dateString: | जून 01, 2009 23: 18 | 
parsed: | 2009-06-01 23:18:00 +0100 |

यह लगभग वही है जो मैं देख रहा हूं, लेकिन मैं दिन और समय को अलग करना चाहता हूं।

NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMM dd, yyyy HH:mm"];

NSDate *now = [[NSDate alloc] init];

NSString *dateString = [format stringFromDate:now];

NSDateFormatter *inFormat = [[NSDateFormatter alloc] init];
[inFormat setDateFormat:@"MMM dd, yyyy"];

NSDate *parsed = [inFormat dateFromString:dateString];

NSLog(@"\n"
"now:        |%@| \n"
"dateString: |%@| \n"
"parsed:     |%@|", now, dateString, parsed);

1
इस तरह के एक मामले में जहां आपने उस कोड को लिखने के लिए समय निकाल लिया है जिसका उपयोग करके आप उस समस्या को हल करने के लिए उपयोग कर रहे हैं जिसे मैं संभवतः अपने पोस्ट के लिए एक संपादन के बजाय एक उत्तर में (इस मामले में edit2 के नीचे सब कुछ) चिपका दूंगा। किसी भी तरह से कोई बड़ी बात नहीं है, लेकिन इसे ढूंढना / देखना थोड़ा आसान हो जाता है कि यह सवाल का हल है।
लॉरेंस जॉनसन

जवाबों:


72

iPhone प्रारूप स्ट्रिंग यूनिकोड प्रारूप में हैं । लिंक के पीछे एक तालिका है जो यह बताती है कि उपरोक्त सभी अक्षर क्या हैं ताकि आप अपना निर्माण कर सकें।

और जब आप उनके साथ काम कर रहे हों, तो निश्चित रूप से अपनी तिथि के प्रारूप को जारी करना न भूलें। उपरोक्त कोड लीक format, now, और inFormat


यह एआरसी के साथ भी सक्रिय है?
१३:१३ बजे डिम्मे

19
उपरोक्त ARC के अंतर्गत कोई भी लीक नहीं होगा (बेशक ARC 2009 में उपलब्ध नहीं था जब हम यह चर्चा कर रहे थे)।
रोब नेपियर

194

यह वही है जो मैंने इस्तेमाल किया:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];

NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];

NSDate *now = [[NSDate alloc] init];

NSString *theDate = [dateFormat stringFromDate:now];
NSString *theTime = [timeFormat stringFromDate:now];

NSLog(@"\n"
      "theDate: |%@| \n"
      "theTime: |%@| \n"
      , theDate, theTime);

[dateFormat release];
[timeFormat release];
[now release];

12

आप इस विधि का उपयोग कर सकते हैं बस अपनी तिथि को इसके पास कर दें

-(NSString *)getDateFromString:(NSString *)string
{

    NSString * dateString = [NSString stringWithFormat: @"%@",string];

    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"your current date format"];
    NSDate* myDate = [dateFormatter dateFromString:dateString];

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"your desired format"];
    NSString *stringFromDate = [formatter stringFromDate:myDate];

    NSLog(@"%@", stringFromDate);
    return stringFromDate;
}

11
    NSDateFormatter *dateformat = [[NSDateFormatter alloc] init];
    [dateformat setDateFormat:@"Your Date Format"];

लौटने के लिए प्रारूप सेट करें ...।

yyyy-MM-ddवापसी की 2015-12-17तारीख

yyyy-MMM-dd वापसी की 2015-Dec-17तारीख

yy-MM-ddवापसी की 15-12-17तारीख

dd-MM-yy वापसी की 17-12-15तारीख

dd-MM-yyyy वापसी की 17-12-2015तारीख

yyyy-MMM-dd HH:mm:ss वापसी की 2015-Dec-17 08:07:13तारीख और समय

yyyy-MMM-dd HH:mm वापसी की 2015-Dec-17 08:07तारीख और समय

अधिक विवरण के लिए डेटा और समय प्रारूप पर क्लिक करें अब के लिए।

धन्यवाद.....


1
कृपया कोड नमूने के साथ अतिरिक्त विवरण प्रदान करें।
मैकीज लाच

मेरे पास यह तिथि '2018-06-08T07: 30: 05.391Z' है, मैंने 'yyyy-MM-dd'T'HH: mm: ss.000Z' की कोशिश की है, लेकिन शून्य मान प्राप्त कर रहा है।
प्रमोद तपनिया

4

कोई नई बात नहीं है लेकिन फिर भी मैं अपने तरीके को साझा करना चाहता हूं:

+(NSString*) getDateStringFromSrcFormat:(NSString *) srcFormat destFormat:(NSString *)
destFormat scrString:(NSString *) srcString
{
    NSString *dateString = srcString;
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    //[dateFormatter setDateFormat:@"MM-dd-yyyy"];
    [dateFormatter setDateFormat:srcFormat];
    NSDate *date = [dateFormatter dateFromString:dateString];

    // Convert date object into desired format
    //[dateFormatter setDateFormat:@"yyyy-MM-dd"];
    [dateFormatter setDateFormat:destFormat];
    NSString *newDateString = [dateFormatter stringFromDate:date];
    return newDateString;
}

3

स्विफ्ट के लिए

var dateString:String = "2014-05-20";
var dateFmt = NSDateFormatter()
// the format you want
dateFmt.dateFormat = "yyyy-MM-dd"
var date1:NSDate = dateFmt.dateFromString(dateString)!;

0

स्विफ्ट 3

extension Date {
    
    func toString(template: String) -> String {
        let formatter = DateFormatter()
        formatter.dateFormat = DateFormatter.dateFormat(fromTemplate: template, options: 0, locale: NSLocale.current)
        return formatter.string(from: self)
    }
    
}

प्रयोग

let now = Date()
let nowStr0 = now.toString(template: "EEEEdMMM") // Tuesday, May 9
let nowStr1 = now.toString(template: "yyyy-MM-dd") // 2017-05-09
let nowStr2 = now.toString(template: "HH:mm:ss") // 17:47:09

अपनी आवश्यकताओं से मेल खाने के लिए टेम्पलेट के साथ खेलें। उदाहरण और डॉक्टर यहाँ आपको आवश्यक टेम्पलेट बनाने में मदद करने के लिए ।

ध्यान दें

DateFormatterयदि आप TableViewउदाहरण के लिए इसका उपयोग करने की योजना बना रहे हैं तो आप इसे कैश करना चाह सकते हैं । एक विचार, 1000 से अधिक तारीखों पाशन देने के लिए मुझे ले गया 0.5 सेकंड से ऊपर का उपयोग कर toString(template: String)समारोह, की तुलना में 0.05 सेकंड का उपयोग कर myFormatter.string(from: Date)


उस नोट को और अधिक मजबूत बनाने के लिए (क्योंकि यह बहुत महत्वपूर्ण है) आप नए उदाहरण के डिफ़ॉल्ट मान के साथ एक वैकल्पिक पैरामीटर लेने के लिए अपने कार्य को फिर से कर सकते हैं। मुझे नहीं पता कि आप क्यों अपमानित हो गए, इसलिए मैं इसे बढ़ा रहा हूं।
Vive

-6
NSDate *date         = [NSDate date];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"]
NSString *dateString  = [df stringFromDate:date];
[df setDateFormat:@"hh:mm:ss"];
NSString *hoursString = [df stringFromDate:date];

Thats यह, आप यह सब आप चाहते हैं मिल गया।

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