如果iPhone / iPad是24小时格式,则将具有12小时格式的日期字符串转换为NSDate时,NSDate将为零

时间:2014-04-16 13:41:02

标签: objective-c ios7 nsdate nsdateformatter

在我的应用程序中,客户端的要求是以12小时格式显示时间。如果我的设备不是24时格格式,一切正常。但是如果我将设备时间格式更改为24小时格式,则mydate即将到来。这是我的代码。

NSString *timeStr=@"12-02-2012 11:12 PM";
NSDateFormatter *dtf = [[NSDateFormatter alloc] init];
[dtf setDateFormat:@"dd-MM-yyyy hh:mm a"];
NSDate *myDate=[dtf dateFromString:timeStr];

请给出一个解决方案。我正在通过mydate验证datePicker的日期,我的应用程序由于零值而崩溃。提前谢谢。

1 个答案:

答案 0 :(得分:2)

我通过为格式化程序设置Locale来获得我的解决方案,如果设备是24小时格式,我将获得NSDate。这是代码。

 NSString *timeStr=@"12-02-2012 11:12 PM";
    NSDateFormatter *dtf = [[NSDateFormatter alloc] init];
    [dtf setDateFormat:@"dd-MM-yyyy hh:mm a"];
    [dtf setFormatterBehavior:NSDateFormatterBehaviorDefault];
    NSDate *datens= [[NSDate alloc]init];
    NSLocale *curentLocale = [NSLocale currentLocale];
    [dtf setLocale:[[NSLocale alloc] initWithLocaleIdentifier:[curentLocale localeIdentifier]]];