2011-04-07 13 views
8

आरंभकर्ता की समस्या के दिन में दिनांक स्ट्रिंग परिवर्तित, लेकिन अगर किसी को भी मुझे इस के साथ मदद कर सकता है मैं सोच रहा था:उद्देश्य-सी: सप्ताह + माह नाम

मैं एक स्ट्रिंग जो होता है के अनुसार चार तार निर्धारित करने की आवश्यकता एक निश्चित तिथि (जैसे @ "अप्रैल 7, 2011"):

  • एक स्ट्रिंग जो सप्ताह के दिन का समय लगेगा (संक्षिप्त: सोम, मंगल, बुध, गुरु, शुक्र, शनि, सूर्य): जैसे @"Thu"
  • एक स्ट्रिंग जो दिन लेगी, उदा। @"7"
  • एक स्ट्रिंग जो महीने लेगी, उदा। @"April"
  • और एक स्ट्रिंग जो वर्ष लेगी, उदाहरण के लिए

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 
    
    NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:118800]; 
    
    NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
    [dateFormatter setLocale:usLocale]; 
    
    NSLog(@"Date for locale %@: %@", 
         [[dateFormatter locale] localeIdentifier], [dateFormatter stringFromDate:date]); 
    // Output: 
    // Date for locale en_US: Jan 2, 2001 
    

    तो यह मुझे एक निश्चित स्वरूपित तारीख देना होगा: @"2011"


अब तक, मैं इस पाया। मैं सोच रहा था, हालांकि, मैं इस तारीख के कुछ हिस्सों तक कैसे पहुंच सकता हूं। वहाँ है - (एनएसएआरएआरए *) सप्ताहांत सिंबल लेकिन मुझे नहीं पता कि यह कैसे काम करें और दस्तावेज़ीकरण काफी मितव्ययी है।

कैलेंडर विशेषज्ञों से किसी भी संकेत का स्वागत किया जाएगा।


संपादित करें:

मुझे लगता है कि इस समाधान का हिस्सा है:

NSLocale *gbLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]; 
NSString *gbFormatString = [NSDateFormatter dateFormatFromTemplate:@"EdMMM" options:0 locale:gbLocale]; 
NSLog(@"gbFormatterString: %@", gbFormatString); 
// Output: gbFormatterString: EEE d MMM, e.g. Thu 7 Apr 

उत्तर

25

n.evermind,

आप कुछ इस तरह की जरूरत के लिए जा रहे:

NSDate *date = [NSDate date]; 
    NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; 
    [formatter setDateFormat:@"MMM dd, yyy"]; 
    date = [formatter dateFromString:@"Apr 7, 2011"]; 
    NSLog(@"%@", [formatter stringFromDate:date]); 

    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSInteger units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit; 
    NSDateComponents *components = [calendar components:units fromDate:date]; 
    NSInteger year = [components year]; 
    NSInteger month=[components month];  // if necessary 
    NSInteger day = [components day]; 
    NSInteger weekday = [components weekday]; // if necessary 

    NSDateFormatter *weekDay = [[[NSDateFormatter alloc] init] autorelease]; 
    [weekDay setDateFormat:@"EEE"]; 

    NSDateFormatter *calMonth = [[[NSDateFormatter alloc] init] autorelease]; 
    [calMonth setDateFormat:@"MMMM"]; 

    NSLog(@"%@ %i %@ %i", [weekDay stringFromDate:date], day, [calMonth stringFromDate:date], year); 

उत्पादन

2011-04-07 12:49:23.519 test[7296:207] Apr 07, 2011 
2011-04-07 12:49:23.521 test[7296:207] Thu 7 April 2011 

चीयर्स, जॉर्डन

+0

बहुत बहुत धन्यवाद। यह वास्तव में सहायक है और बहुत सराहना की है। –

+0

बस एक और बात: मैं वास्तव में आज की तारीख कैसे प्राप्त करूं? अर्थात। आपके उदाहरण में यह स्थिर दिनांक = [फॉर्मेटर दिनांक फ्रॉमस्ट्रिंग: @ "अप्रैल 7, 2011"]; आपकी सहायताके लिए धन्यवाद! –

+0

एनएसडीएटी दिनांक = [एनएसडीएटी तिथि]; आपको आज की तारीख देगी। इस मामले में, आपको ऊपर दिए गए कोड में पहले NSDateFormatter की आवश्यकता नहीं है। – Jordan

0

आप @ n.evermind

NSDateFormatter

+0

धन्यवाद, लेकिन प्रलेखन काफी है मुश्किल चल रहा है मुझे लगता है कि मुझे चाहिए - (एनएसएआरएआरई *) सप्ताहांत सिम्बोल्स लेकिन मुझे इस बात का कोई अंदाजा नहीं है कि मेरे संदर्भ में इसका उपयोग कैसे किया जाए। –

0

पर एक नज़र डालनी चाहिए आपको वास्तव मेंदेखना चाहिएऔर विशेष रूप से - components:fromDate विधि जो आपको NSDateComponents ऑब्जेक्ट देती है जिसमें आपके इच्छित सभी पेस हैं।

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