Dans mon application, je dois obtenir l'heure et la minute séparément:
NSString *currentHour=[string1 substringWithRange: NSMakeRange(0,2)];
int currentHourInNumber=[currentHour intValue];
Considérons que string1
Contient 11:59:13 AM
Qui provient de datepicker.
Ici, si j'utilise le code ci-dessus, il est correct d'obtenir une heure s'il est supérieur à 9. Sinon, je dois changer NSMakeRange(0,1)
pour obtenir une heure comprise entre 1 et 9.
Existe-t-il des méthodes pour obtenir l'heure, les minutes, etc.?
Merci d'avance, veuillez me fournir un exemple de code.
Utilisez un NSDateFormatter pour convertir string1
dans un NSDate
, puis récupérez le 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];
Swift 1 et 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
Swift 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
Plus d'informations sur le dateformat se trouve sur le site officiel de l'unicode
Si vous n'en avez besoin que pour présenter une chaîne, le code suivant est beaucoup plus simple.
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm"];
NSString *startTimeString = [formatter stringFromDate:startTimePicker.date];
Cela me semble être le sens de la question, pas besoin de formateurs:
NSDate *date = [NSDate date];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:(NSCalendarUnitHour | NSCalendarUnitMinute) fromDate:date];
NSInteger hour = [components hour];
NSInteger minute = [components minute];
NSDateComponents
Vous trouverez tout ce dont vous avez besoin ici:
https://developer.Apple.com/library/content/documentation/Cocoa/Conceptual/DatesAndTimes/Articles/dtCalendars.html
Avec iOS 8, Apple a introduit une méthode d'assistance permettant de récupérer les hour
, minute
, second
et nanosecond
à partir d'un Objet NSDate.
Objectif c
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);
Swift
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)")
}
Si vous utilisiez la bibliothèque C, cela pourrait être fait:
time_t t;
struct tm * timeinfo;
time (&t);
timeinfo = localtime (&t);
NSLog(@"Hour: %d Minutes: %d", timeinfo->tm_hour, timeinfo->tm_min);
Et en utilisant Swift:
var t = time_t()
time(&t)
let x = localtime(&t)
println("Hour: \(x.memory.tm_hour) Minutes: \(x.memory.tm_min)")
Pour plus de précisions, consultez: http://www.cplusplus.com/reference/ctime/localtime/
Swift 2.
Vous pouvez faire ce qui suit pour obtenir des heures et des minutes à partir d'une date:
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
Swift 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))
Veuillez prendre note du transtypage en chaîne dans l'instruction d'impression, vous pouvez facilement affecter cette valeur à des variables, comme ceci:
var hoursString = String(hour)
var minutesString = String(minute)
Ensuite, vous pouvez concaténer des valeurs comme celle-ci:
var compoundString = "\(hour):\(minute)"
print(compoundString)