पूर्णांक प्रारूप में NSDate का दिन, महीना और वर्ष कैसे प्राप्त करें?


95

मैं NSDateपूर्णांक रूप में दिन, महीने और वर्ष के घटकों को प्राप्त करना चाहता हूं अर्थात यदि तारीख 1/2/1988 है तो मुझे पूर्णांक के रूप में अलग से 1, 2 और 1988 मिलना चाहिए। आईओएस में मैं यह कैसे कर सकता हूं? मुझे भी ऐसा ही सवाल लगा लेकिन विधि descriptionWithCalendarFormat: एक चेतावनी देती है और लगता है कि अब तक इसकी कमी हो गई है।


केवल एक पूर्णांक के लिए आवश्यक है, तो NSDate को एक पूर्णांक में देखें NSDate
सूरगाछ

जवाबों:


223

आप यहाँ हैं,

NSDate *currentDate = [NSDate date];
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:currentDate]; // Get necessary date components

 [components month]; //gives you month
 [components day]; //gives you day
 [components year]; // gives you year

आप उपरोक्त के लिए NSDateCompords का उपयोग कर सकते हैं।

जानकारी के लिए कृपया इस पृष्ठ पर जाएँ ।

आशा करता हूँ की ये काम करेगा।


1
सही उत्तर के लिए कोड प्रदान करने के लिए +1। लेकिन आपको यह उल्लेख करना चाहिए कि जानकारी NSDateCompords से आती है, NSDateFormatter से नहीं।
काला मेंढक

@ ब्लेक ने इसके लिए माफी मांगी। मेरे उत्तर को अपडेट किया।
जनक निर्मल

1
@ जनक निर्मल लिखें विशिष्ट बिंदु आप यह नहीं समझा सकते हैं कि दिन, महीने, वर्ष के लिए स्ट्रिंग प्रारूप कैसे प्राप्त करें, एक उपयोगकर्ता समझ नहीं सका।
अन्नू

1
@JanakNirmal आपको इसकी व्याख्या करनी चाहिए कि सटीक मूल्य कैसे मिलता है।
अन्नू

3
पदावनति चेतावनियों से बचने के लिए: NSDateComplds * घटक = [कैलेंडर घटक: NSCalendarUnitMonth | NSCalendarUnitMonth | NSCalendarUnitDay fromDate: currentcate];
रोड्रिगो पिंटो

17

हां, NSCalendar के उपयोग से, हालांकि, मुझे लगता है कि यह आपका काम कर देगा।

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]];
NSInteger day = [components day];    
NSInteger month = [components month];
NSInteger year = [components year];

13

तीव्र

let components = NSCalendar.currentCalendar().components([.Day, .Month, .Year], fromDate: self)
let day = components.day
let month = components.month
let year = components.year

सुविधा के लिए आप इसे एक NSDateएक्सटेंशन में रख सकते हैं और इसे टपल लौटा सकते हैं:

extension NSDate: Comparable {

    var dayMonthYear: (Int, Int, Int) {
        let components = NSCalendar.currentCalendar().components([.Day, .Month, .Year], fromDate: self)
        return (components.day, components.month, components.year)
    }
}

अब आपको केवल लिखना है:

let (day, month, year) = date.dayMonthYear

यदि आप उदाहरण के लिए केवल उसी वर्ष प्राप्त करना चाहते हैं जिस वर्ष आप लिख सकते हैं:

let (_, _, year) = date.dayMonthYear

2
मुझे आपका दृष्टिकोण पसंद है। एक सुझाव है, हालांकि करने के लिए पैरामीटर नामकरण बदलने के लिए है (day: Int, month: Int, year: Int), इस तरह आप का उपयोग करके परिणाम उपयोग कर सकते हैं date.dayMonthYear.day, date.dayMonthYear.month, date.dayMonthYear.year
पॉल पीलेन

9

इसे प्राप्त करने के लिए आप NSDateCompords का उपयोग कर सकते हैं,

NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
NSDate *currDate = [NSDate date];
NSDateComponents *dComp = [calendar components:( NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit ) 
                                      fromDate:currDate];

int day = [dComp day];
int month = [dComp month];
int year = [dComp year];

8

इसे विस्तार में रखें और अपना जीवन जीएं and

extension Date{
    var day:Int {return Calendar.current.component(.day, from:self)}
    var month:Int {return Calendar.current.component(.month, from:self)}
    var year:Int {return Calendar.current.component(.year, from:self)}
}
Date().day//22
Date().month//4
Date().year//2017

3.0 स्विफ्ट (यह पिछले उत्तरों की एक पुनरावृत्ति है, लेकिन इसे आपके सभी भविष्य के ऐप प्रोजेक्ट्स के लिए हल करता है)


7

उन लोगों के लिए जो मेरे जैसे सीधे वेब से सीधे कॉपी और पेस्ट करते हैं, यह iOS 8 के लिए एक छोटा अपडेट है

NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:[NSDate date]];
[components day]; //Day
[components month];//Month
[components year];//Year

अंतर NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay NSMonthCalendarUnit | NSDayCalendarUnit | NSYearCalendarUnit | NSWeekdayCalendarUnitको हटा दिया गया है


2

यू इस कोशिश कर सकते हैं ......।

Mycal = [NSCalendar currentCalendar];
today = [NSDate date];
compA =[Mycal components:(NSMonthCalendarUnit | NSDayCalendarUnit | NSYearCalendarUnit | NSWeekdayCalendarUnit) fromDate:today];     
FirstDateofMonth=[today dateByAddingTimeInterval:([compA day]-1)*(-24*60*60)];

compA =[Mycal components:(NSMonthCalendarUnit | NSDayCalendarUnit | NSYearCalendarUnit | NSWeekdayCalendarUnit) fromDate:FirstDateofMonth];
today = FirstDateofMonth;
compA = [Mycal components:(NSMonthCalendarUnit | NSDayCalendarUnit | NSYearCalendarUnit | NSWeekdayCalendarUnit) fromDate:today];
[compA setMonth:([compA month])];
[self DrawMonthInPortraitView];
[compA retain];

1
NSDate *currentDate = [NSDate date];
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:currentDate]; // Get necessary date components

[components month]; //gives you month
[components day]; //gives you day
[components year]; // gives you year

NSString *temp=[NSString stringWithFormat:@"Months:%d Day:%d Year:%d",[components month],  [components day],[components year]];
NSLog(@"%@",temp);

1
let date = Date()
let calendar = Calendar.current

let year = calendar.component(.year, from: date)
let month = calendar.component(.month, from: date)
let day = calendar.component(.day, from: date)
print("hours = \(year):\(month):\(day)")

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