iPhone OS: मैं एक विशिष्ट तिथि के लिए NSDate कैसे बना सकता हूं?


98

एक साधारण सी चीज की तरह लगता है, लेकिन मुझे ऐसा करने का तरीका नहीं मिल रहा है।

यह कुछ अलग तरीकों को देखने के लिए बहुत अच्छा होगा।

जवाबों:


211

@ चक का उत्तर सही है, और मुझे निम्नलिखित कोड तक ले जाएं। सोचा था कि मैं साझा करूंगा:

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:10];
[comps setMonth:10];
[comps setYear:2010];
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comps];

7
नोट भी है setHour, setMinute, setSecondको अधिक स्पष्टता के लिए, आदि।
devios1

19

आप इसका उपयोग कर सकते हैं

NSString *dateString = @"03-Sep-11";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"dd-MMM-yy";
NSDate *date = [dateFormatter dateFromString:dateString];

उम्मीद है इससे आपकी सहायता होगी।


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

जिस तरह से ओड बेन का उल्लेख है वह भी एक और सबसे अच्छा तरीका है ..... NSDateCompords * comps = [[NSDateCompords आवंटित] init]; [comps setDay: 10]; [comps setMonth: 10]; [comps setYear: 2010]; NSDate * date = [[NSCalendar currentCalendar] dateFromCompords: comps];
कमलेश्वर

16

यदि आप UNIXy तिथि के बजाय एक विशिष्ट कैलेंडर तिथि के बारे में बात कर रहे हैं, तो आप शायद NSCalendar चाहते हैं dateFromComponents:


9

स्विफ्ट उदाहरण

उदाहरण अक्सर सीखने का सबसे आसान तरीका है। कुछ उदाहरण निम्नलिखित हैं।

अभी

यह सबसे आसान है।

let currentDateTime = Date()

20 फरवरी, 2017

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 2017
dateComponents.month = 2
dateComponents.day = 20

// Create date from components
let userCalendar = Calendar.current // user calendar
let dateThisPostWasUpdated = userCalendar.date(from: dateComponents)

1 अप्रैल, 1976

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 1976
dateComponents.month = 4
dateComponents.day = 1

// Create date from components
let userCalendar = Calendar.current // user calendar
let appleFoundedDate = userCalendar.date(from: dateComponents)

अधिक जानकारी चाहिए ...?

दिनांक बनाने के अन्य तरीके भी हैं। यदि आप उन लोगों को सीखना चाहते हैं, साथ ही साथ तिथि कैसे प्रदर्शित करें , तो मेरा पूरा उत्तर देखें


8

NSDate के लिए दस्तावेज़ देखें । आप उपयोग कर सकते हैं dateFromString:की विधि NSDateFormatterया dateFromComponents:की विधि NSCalendar


मैं इस तारीख को प्राप्त करता रहता हूं: "1969-12-31 16:00:00" -0800 स्ट्रिंग से तारीख का उपयोग करते समय
निकितादेई

NSDateFormatter * dateFormatter = [[NSDateFormatter आवंटन] init]; NSDate * CaptureStartDate = [dateFormatter dateFromString: @ "जन 2, 2001"]; NSLog (@ "% @", [कैप्चरस्टार्ट विवरण]); उत्पादन: 2010-04-05 10: 49: 47.688 कैलेंडर CALENDAR2 [21,339: 207] 1969/12/31 16:00:00 -0800
nickthedude

हो सकता है कि आपको सादे के बजाय स्वरूपित तारीख पर कुछ पैरामीटर सेट करने की आवश्यकता हो init?
18

3

मुझे इस प्रश्न का उत्तर ढूंढते हुए यह धागा मिला लेकिन फिर मुझे अपने एक बड़े नर्ड रेंच ऑब्जेक्टिव-सी प्रोग्रामिंग बुक में एक अच्छा उदाहरण मिला। उन्हें श्रेय, मुझे नहीं।

  NSDateComponents *myBDay  =[[NSDateComponents alloc] init];
    [myBDay setDay:22];
    [myBDay setMonth: 04];
    [myBDay setYear: 1984];
    [myBDay setHour:9];
    [myBDay setMinute:25];
    [myBDay setSecond:35];

    NSCalendar *g = [[ NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDate *dateOfBirth = [g dateFromComponents:myBDay];

2

यह हास्यास्पद है, है ना?

मध्य 2013 और Apple ने अभी भी NSDate मान सेट करने का एक सरल तरीका प्रदान नहीं किया है।

मेरी वर्तमान iPad परियोजना के दौरान, मुझे विश्वास नहीं हो रहा था कि मुझे NSDate से वर्ष मान प्राप्त करने के लिए अपने स्वयं के सहायक वर्ग को लिखने के लिए उत्पादकता को थोड़ी देर के लिए रोकना होगा। मेरा मतलब है, चलो, यह मूल सामान है।

वैसे भी, यहाँ एक सहायक श्रेणी है जिसे मैंने अपनी परियोजना में इस्तेमाल किया है, एक स्ट्रिंग को NSDate मान में बदलने के लिए:

@implementation DateHelper

+(NSDate*)parseDateString:(NSString *)dateString
{
    NSDateFormatter *rfc3339TimestampFormatterWithTimeZone = [[NSDateFormatter alloc] init];
    [rfc3339TimestampFormatterWithTimeZone setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
    [rfc3339TimestampFormatterWithTimeZone setDateFormat:@"MMM dd, yyyy"];

    NSDate *theDate = nil;
    NSError *error = nil;
    if (![rfc3339TimestampFormatterWithTimeZone getObjectValue:&theDate forString:dateString range:nil error:&error]) {
        NSLog(@"Date '%@' could not be parsed: %@", dateString, error);
    }

    return theDate;
}

@end

इस कोड का उपयोग करके, आप कुछ का उपयोग करके एक NSDate मान सेट कर सकते हैं:

NSDate* date = [DateHelper parseDateString:@"Jul 16, 2013"];

नोट: यह फ़ंक्शन यहाँ से लिए गए कोड पर आधारित था: https://stackoverflow.com/a/3968411/391605

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

//  Take a date string in the format "Oct 23, 2013", and convert it into a NSDate value
//  THIS DOESN'T WORK !  DON'T TRUST THIS CODE !!
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy"];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

NSDate* date = [formatter dateFromString:dateString];

मुझे याद है कि यह "अक्टूबर 12, 2012" पर बुरी तरह से विफल रहा ... यही कारण है कि मैंने हार मान ली और ऊपर दिखाए गए अधिक जटिल "पार्सडेस्ट्रिंग" फ़ंक्शन का उपयोग किया।

मेरी बात है ... सावधान।

बहुत ही बुनियादी NSDate कार्यों में से कुछ ठीक से काम नहीं करते ...

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