2016-08-12 71 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有時區屬性,它將其轉換回您當前的時區 –