2016-08-12 44 views
0

我早先尝试了下面的代码,它工作正常,但现在它无法根据给定的格式验证日期。验证日期不起作用

NSDateFormatter *format = [[NSDateFormatter alloc] init]; 
[format setDateStyle:NSDateFormatterShortStyle]; 
[format setDateFormat:@"dd-MM-yyyy"]; 
NSDate *validateDOB = [format dateFromString:textField.text]; 
if (validateDOB != nil) 
    return YES; 
else 
    return NO; 

当我试图验证日期字符串为24-12-199,该validateDOB的返回值是“0199-12-23 18点06分32秒+0000”

+1

设置格式化日期的'locale'和'timezone'属性。 –

+0

你面临的问题 –

+0

检查你的年份是错误的'199'它是'1999' –

回答

0

我相信您已从调试控制台打印0199-12-23 18:06:32 +0000

请在末尾看到这个:+0000。由于NSDate对象始终将数据保存在+0000时区中。但是,通过将其转换为字符串进行打印时,它会自动将当前时区记入帐户并打印日期。所以,不用担心,保存日期非常好

NSDate总是以GMT时间保存,但NSDateFormatter通过向其中添加当前时区来添加扭曲。所以你可以根据需要改变时区。

+0

“它会自动把你当前的时区帐户,并将打印日期”。不,它不会!它是格林威治标准时间打印(鉴于'NSDate'不存储时区)。 – Droppy

+0

现在做一件事..通过使用相同的日期格式化程序,再次将NSDate转换回NSString ..您是否获取与您保存的日期相同的日期,或者您是否获取GMT的日期。我100%确定它会打印你自己的日期。 –

+0

原因是,NSDate总是保存在格林尼治标准时间,它没有时区,但NSDateFormatter有时区属性,它将其转换回您当前的时区 –