এনএসডিট থেকে ঘন্টা এবং মিনিট কীভাবে পাব?


113

আমার আবেদনে আমার ঘন্টা এবং মিনিট আলাদাভাবে পেতে হবে:

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

বিবেচনা করুন string1ধারণ করে 11:59:13 AMযা datepicker থেকে আসছে।

এখানে যদি আমি উপরের কোড ব্যবহার করি তবে এটি 9 এর চেয়ে বেশি হলে ঘন্টা পাওয়া ঠিক আছে অন্যথায় আমাকে NSMakeRange(0,1)1 থেকে 9 এর মধ্যে ঘন্টা পেতে পরিবর্তন করতে হবে।

ঘন্টা, মিনিট, ইত্যাদি পাওয়ার জন্য কি কোনও পদ্ধতি আছে?

অগ্রিম ধন্যবাদ, আমাকে নমুনা কোড সরবরাহ করুন।


উত্তর:


262

একটি ব্যবহার করুন NSDateFormatter রূপান্তর করতে string1একটি মধ্যে NSDate, তারপর প্রয়োজনীয় পেতে NSDateComponents :

ওবজ-সি :

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

তারিখের ফর্ম্যাট সম্পর্কে আরও তথ্য অফিসিয়াল ইউনিকোড সাইটে


হাই আরও একটি সন্দেহ, কী এনএসডিটে সময়, মিনিট পরিবর্তন করা সম্ভব
— ম্যাক

ঘন্টা এবং মিনিট পরিবর্তন করতে, সম্ভবত এনএসডিট এর + তারিখ উইথটাইমIntervalSinceReferences তারিখ দেখুন:। এই পদ্ধতিটি আপনাকে তারিখে নির্দিষ্ট পরিমাণ সেকেন্ড যুক্ত করতে দেয় (এবং একটি নতুন তারিখ ফিরিয়ে দেয়)।
— থমাস মুলার

আইওএসে, "উপাদানগুলি" কেবল সংস্করণ 8.0 থেকে পাওয়া যায়। <8.0 সম্পর্কে কি?
— রুয়ান্টাভন

2
@ রুহাটাভান বিকাশকারী.এপল.লাইবারি / আইওএস / ডকুমেন্টেশন / কোকোয়া / রেফারেন্স / :: "আইওএস ২.০ এবং তার পরে পাওয়া যাবে।" আমি অবশ্যই কয়েক বছর ধরে এই এপিআই ব্যবহার করেছি।
— থমাস মুলার

আমি অনুমান করি এটি এক্সকোডের একটি বাগ, যেহেতু এটি 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
এএম বা প্রধানমন্ত্রী কীভাবে পাবেন?
— ইয়ালামান্ডারও


4

আপনি যদি সি লাইব্রেরি ব্যবহার করেন তবে এটি করা যেতে পারে:

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.cplsplus.com/references/ctime/localtime/


4

IOS 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

সুইফট ২.০

আপনি একটি তারিখ থেকে ঘন্টা এবং মিনিট পেতে নিম্নলিখিত জিনিস করতে পারেন:

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

সুইফট ২.০

    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)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.