我如何从NSDate获得小时和分钟?

mac*_*mac 113 objective-c nsdate hour ios

在我的申请中,我需要分别得到小时和分钟:

NSString *currentHour=[string1 substringWithRange: NSMakeRange(0,2)];
        int currentHourInNumber=[currentHour intValue];
Run Code Online (Sandbox Code Playgroud)

考虑string1包含11:59:13 AM来自datepicker的包含.

在这里,如果我使用上面的代码,如果它大于9 NSMakeRange(0,1),可以获得小时.否则我需要改变以获得1到9之间的小时.

是否有任何方法可以获得小时,分钟等?

在此先感谢,请提供示例代码.

Tho*_*ler 260

使用NSDateFormatter转换string1为a NSDate,然后获取所需的NSDateComponents:

Obj-C:

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];
Run Code Online (Sandbox Code Playgroud)

Swift 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
Run Code Online (Sandbox Code Playgroud)

斯威夫特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
Run Code Online (Sandbox Code Playgroud)

有关dateformat的更多信息,请访问官方unicode网站

  • @Rhuntavan https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSCalendar_Class/index.html#//apple_ref/occ/instm/NSCalendar/components:fromDate:"Open可用2.0及更高版本." 我肯定使用这个API多年了. (2认同)

Gil*_*lin 49

如果您只需要它作为字符串呈现,则以下代码更容易

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

NSString *startTimeString = [formatter stringFromDate:startTimePicker.date];
Run Code Online (Sandbox Code Playgroud)


Hen*_*Two 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];
Run Code Online (Sandbox Code Playgroud)