У меня есть NSString, и мне нужно проверить, что он находится в определенном формате MM/DD/YY. Затем мне нужно преобразовать это в NSDate. Любая помощь по этому поводу будет высоко оценена. Sidenote - я обыскал вокруг, и люди предлагают использовать RegEx, я никогда не использовал это и не совсем понимаю его вообще. Может ли кто-нибудь указать мне хороший ресурс/объяснение.Проверьте NSString для определенного формата даты
ответ
Используйте обеими задачами NSDateFormatter
. Если вы можете преобразовать строку в дату, она будет в правильном формате (и у вас уже есть результат).
NSString *strDate1 = @"02/09/13";
NSString *strDate2 = @"0123/234/234";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/MM/yy"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
NSDate *dateFormat1 = [dateFormatter dateFromString:strDate1];
NSDate *dateFormat2 = [dateFormatter dateFromString:strDate2];
NSLog(@"%@", dateFormat1); // prints 2013-09-02 00:00:00 +0000
NSLog(@"%@", dateFormat2); // prints (null)
Значит, вы будете знать, когда он не отформатирован правильно, если NSDate равен нулю. Вот ссылка на документы, если вам нужна дополнительная информация: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html#//apple_ref/doc/uid/TP40002369-SW1
Я знаю, что это поздний ответ, но невозможно всегда гарантировать, что строка находится в этом конкретном формате даты.
Форвард даты, регулярное выражение или даже человек не может проверить определенные даты, потому что мы не знаем, вводит ли пользователь «мм/DD/yy» или «DD/mm/yy». Обычно в некоторых местах сначала вводится день месяца, в то время как в других местах вы вводите месяц первым. Итак, если они входят в «09/06/2013», они означают «6 сентября» или «9 июня»?
Вот простая функция для тех, кто ищет простое решение.
- (BOOL) isTheStringDate: (NSString*) theString
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:theString];
if (dateFromString !=nil) {
return true;
}
else {
return false;
}
}
Необходимо изменить форматтер, указанный ниже, чтобы соответствовать форматированию, используемому вашей датой.
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
- 1. Для передачи определенного формата даты
- 2. Проверьте наличие определенного формата строки
- 3. js regexp для определенного формата даты
- 4. проверка для определенного формата даты и строки
- 5. Дата форматировщик для определенного формата даты
- 6. Преобразование определенного формата даты в формат календаря
- 7. Форматирование даты времени до определенного формата
- 8. Regex для определенного формата
- 9. Regex для определенного формата
- 10. Ограниченный ввод через Javascript для определенного формата даты
- 11. Ошибка формата NSString - {(String)}
- 12. NSString для преобразования NSDate для конкретного формата
- 13. DataFrame Для определенного пользователя формата
- 14. Регулярное выражение для определенного формата
- 15. Regex для определенного формата (JavaScript)
- 16. Проверьте, является ли двойное значение определенного формата с помощью Regex
- 17. Преобразование даты NSString в NSDateComponents
- 18. проверка формата даты для введенной даты python
- 19. Как найти появление формата в NSString
- 20. Как преобразовать даты формата строки в даты формата даты?
- 21. Преобразование NSString в куски NSString с форматом даты
- 22. Регулярное выражение для формата даты
- 23. ValidationExpression для специального формата даты
- 24. формата DateTime.ParseExact для пользовательской даты
- 25. Преобразование формата даты для SQL
- 26. Regex для формата пользовательской Даты
- 27. Строка даты формата даты JavaScript
- 28. Тип входного ввода = значение даты до даты для получения определенного формата
- 29. Как проверить, задана ли заданная строка определенного формата даты?
- 30. Ошибка формата даты даты Java?
@lnafziger - это право. Обязательно помните об этом, если вы используете нечто похожее на то, что я поставил выше. –