NSDate से मुझे घंटे और मिनट कैसे मिलते हैं?


113

अपने आवेदन में मुझे घंटे और मिनट अलग से प्राप्त करने की आवश्यकता है:

NSString *currentHour=[string1 substringWithRange: NSMakeRange(0,2)];
        int currentHourInNumber=[currentHour intValue];

विचार करें कि string1इसमें 11:59:13 AMकौन सी तारीख से आ रही है।

यहाँ अगर मैं ऊपर दिए गए कोड का उपयोग करता हूं, तो यह ठीक है कि अगर यह 9 से अधिक है तो घंटे मिलेंगे। मुझे NSMakeRange(0,1)1 से 9 के बीच का समय पाने के लिए बदलने की आवश्यकता है ।

क्या घंटे, मिनट आदि प्राप्त करने के लिए कोई तरीके हैं?

अग्रिम धन्यवाद, कृपया मुझे नमूना कोड प्रदान करें।


जवाबों:


262

एक NSDateFormatter का उपयोग एक string1में बदलने के लिए NSDate, फिर आवश्यक NSDateCompords प्राप्त करें :

ओबज-सी :

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"<your date format goes here"];
NSDate *date = [dateFormatter dateFromString:string1];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute) fromDate:date];
NSInteger hour = [components hour];
NSInteger minute = [components minute];

स्विफ्ट 1 और 2 :

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "Your date Format"
let date = dateFormatter.dateFromString(string1)
let calendar = NSCalendar.currentCalendar()
let comp = calendar.components([.Hour, .Minute], fromDate: date)
let hour = comp.hour
let minute = comp.minute

स्विफ्ट 3 :

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "Your date Format"
let date = dateFormatter.date(from: string1)
let calendar = Calendar.current
let comp = calendar.dateComponents([.hour, .minute], from: date)
let hour = comp.hour
let minute = comp.minute

डेटफ़ॉर्म के बारे में अधिक आधिकारिक यूनिकोड साइट पर है


हाय एक और शक है, यह संभव घंटा, मिनट NSDate में बदलने के लिए है
मैक

घंटे और मिनट बदलने के लिए, शायद NSDate के + dateWithTimeIntervalSinceReferenceDate में देखें। यह विधि आपको कुछ सेकंड के लिए (और एक नई तारीख वापस करने के लिए) एक विशिष्ट राशि जोड़ने की सुविधा देती है।
थॉमस मुलर

IOS पर, "घटक" केवल संस्करण 8.0 के बाद से उपलब्ध है। कैसे के बारे में <8.0?
रुवंतवन

2
@Rhuantavan developer.apple.com/library/ios/documentation/Cocoa/Reference/… : "iOS 2.0 और बाद में उपलब्ध।" मैं निश्चित रूप से इस एपीआई का उपयोग वर्षों से कर रहा हूं।
थॉमस मुलर

मुझे लगता है कि यह XCode में एक बग है क्योंकि यह 8.0 होने की रिपोर्ट कर रहा था। मुझे स्रोतों या ऑनलाइन डॉक्स की जाँच करनी चाहिए थी। मेरी गलती।
रुवंतवन

52

यदि आपको केवल एक स्ट्रिंग के रूप में प्रस्तुत करने के लिए इसकी आवश्यकता है, तो निम्न कोड बहुत आसान है

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

NSString *startTimeString = [formatter stringFromDate:startTimePicker.date];

45

मुझे यह प्रतीत होता है कि प्रश्न के बाद क्या है, फॉर्मेटर्स की कोई आवश्यकता नहीं है:

NSDate *date = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute) fromDate:date];
NSInteger hour = [components hour];
NSInteger minute = [components minute];

1
AM या PM कैसे प्राप्त करें?
यमलंदराव जू


4

यदि आप C लाइब्रेरी का उपयोग करने वाले थे तो यह किया जा सकता है:

time_t t;
struct tm * timeinfo;

time (&t);
timeinfo = localtime (&t);

NSLog(@"Hour: %d Minutes: %d", timeinfo->tm_hour, timeinfo->tm_min);

और स्विफ्ट का उपयोग करना:

var t = time_t()
time(&t)
let x = localtime(&t)

println("Hour: \(x.memory.tm_hour) Minutes: \(x.memory.tm_min)")

अधिक मार्गदर्शन के लिए देखें: http://www.cplusplus.com/reference/ctime/localtime/


4

आईओएस 8 के साथ, एप्पल पुनः प्राप्त करने के एक सहायक पद्धति शुरू की hour, minute, secondऔर nanosecondएक NSDate वस्तु से।

उद्देश्य सी

NSDate *date = [NSDate currentDate];
NSInteger hour = 0;
NSInteger minute = 0;
NSCalendar *currentCalendar = [NSCalendar currentCalendar];
[currentCalendar getHour:&hour minute:&minute second:NULL nanosecond:NULL fromDate:date];
NSLog(@"the hour is %ld and minute is %ld", (long)hour, (long)minute);

तीव्र

let date = NSDate()
var hour = 0
var minute = 0
let calendar = NSCalendar.currentCalendar()
if #available(iOS 8.0, *) {
    calendar.getHour(&hour, minute: &minute, second: nil, nanosecond: nil, fromDate: date)
    print("the hour is \(hour) and minute is \(minute)")
}

3

स्विफ्ट 2.0

आप दिनांक से घंटे और मिनट प्राप्त करने के लिए निम्न कार्य कर सकते हैं:

let dateFromat = NSDateFormatter()
dateFromat.dateFormat = "hh:mm a"
let date = dateFromat.dateFromString(string1) // In your case its string1
print(date) // you will get - 11:59 AM

संक्षिप्त विवरण के लिए NSDateFormatter का उपयोग करें ।
yo2bh

2

स्विफ्ट 2.0

    let dateNow = NSDate()
    let calendar = NSCalendar.currentCalendar()
    let hour = calendar.component(NSCalendarUnit.Hour, fromDate: dateNow)
    let minute = calendar.component(NSCalendarUnit.Minute, fromDate: dateNow)
    print(String(hour))
    print(String(minute))

कृपया प्रिंट स्टेटमेंट में स्ट्रींग के लिए कास्ट का ध्यान रखें, आप आसानी से वैरिएबल्स को उस मान को असाइन कर सकते हैं, जैसे:

var hoursString = String(hour)
var minutesString = String(minute)

फिर आप इस तरह से मानों को बदल सकते हैं:

var compoundString = "\(hour):\(minute)"
print(compoundString)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.