Я попытался получить NSDate из NSString с неведомому формате, поэтому я написал функцию, как показано нижеNSDate обнаружения с NSDataDetector
-(void)dateFromString:(NSString*)string {
NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:(NSTextCheckingTypes)NSTextCheckingTypeDate error:&error];
NSArray *matches = [detector matchesInString:string
options:0
range:NSMakeRange(0, [string length])];
NSLocale* currentLoc = [NSLocale currentLocale];
for (NSTextCheckingResult *match in matches) {
if ([match resultType] == NSTextCheckingTypeDate) {
NSLog(@"Date : %@", [[match date] descriptionWithLocale:currentLoc]);
}
}
}
Он хорошо работает на одном месте, за исключением.
Если я призываю
[self dateFromString:@"6/12"];
Он печатает
Дата: Четверг, 12 июня , 2014 в 12:00:00 Australian Eastern Standard Time
В то же время, если я позвоню
[self dateFromString:@"13/12"];
печатает
Дата: Пятница, Декабрь 13, 2013 в 12:00:00 Австралийское восточное летнее время
В принципе, я хочу, чтобы функция вести себя в соответствии , Поскольку я живу в Австралии, он должен был вернуться 6 декабря для первой казни. Результат второго вызова правильный.
Что я здесь делаю неправильно?
Почему вы не используете [NSDateFormatter] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html), он является гибким и вы можете легко решить эту проблему, так как вы можете установить формат строки даты. Вы задаете формат даты с помощью setDateFormat, а затем вы вызываете dateFromString: чтобы преобразовать строку в дату – mrt
Я думаю, что нет подходящего способа обработки строки даты формата UNKNOWN. Вы должны определить формат строки даты – Joiningss
Невероятно, как мой поиск в Google дал мне право на то, что я искал, наберите mate :) – petert0th