Ios 检查NSString以获取特定的日期格式

Ios 检查NSString以获取特定的日期格式,ios,cocoa-touch,nsstring,nsdate,Ios,Cocoa Touch,Nsstring,Nsdate,我有一个NSString,我需要检查它是否是这种特定格式的MM/DD/YY。然后我需要将其转换为NSDate。在此方面的任何帮助都将不胜感激。旁注-我到处搜索过,有人建议使用正则表达式,我从来没有使用过它,一般来说也不清楚。谁能给我指出一个好的资源/解释。对这两项任务都使用NSDateFormatter。如果您可以将字符串转换为日期,那么它的格式是正确的(并且您已经得到了结果) 因此,如果NSDate为nil,您将知道何时格式不正确。如果您需要更多信息,这里有文档的链接:我知道这是一个迟来的答案

我有一个NSString,我需要检查它是否是这种特定格式的MM/DD/YY。然后我需要将其转换为NSDate。在此方面的任何帮助都将不胜感激。旁注-我到处搜索过,有人建议使用正则表达式,我从来没有使用过它,一般来说也不清楚。谁能给我指出一个好的资源/解释。

对这两项任务都使用
NSDateFormatter
。如果您可以将字符串转换为日期,那么它的格式是正确的(并且您已经得到了结果)


因此,如果NSDate为nil,您将知道何时格式不正确。如果您需要更多信息,这里有文档的链接:

我知道这是一个迟来的答案,但不可能总是保证字符串采用这种特定的日期格式


日期格式化程序、正则表达式甚至人工都无法验证某些日期,因为我们不知道用户输入的是“mm/DD/yy”还是“DD/mm/yy”。在某些地方,通常是先输入月份的日期,而在其他地区,则是先输入月份。因此,如果他们输入“09/06/2013”,他们的意思是“9月6日”还是“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"];

@lnafziger是对的。如果你使用类似于我上面提到的东西,一定要记住这一点。
    [dateFormatter setDateFormat:@"yyyy-MM-dd"];