NSDateFormetter iOS的问题

时间:2015-12-24 10:16:53

标签: ios xcode nsdateformatter

刚才发现NSDateFormatter停止以24小时格式识别AM / PM。我的代码是

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy MM dd HH:mma";

NSDate *date1 = [dateFormatter dateFromString:@"2015 02 11 12:30PM"];
NSLog(@"%@", date1);
NSDate *date2 = [dateFormatter dateFromString:@"2015 02 11 13:30PM"];
NSLog(@"%@", date2);

我得到的输出显示的日期是:

2015-12-24 15:38:54.234 xyz[580:88238] 2015-02-11 07:00:00 +0000
2015-12-24 15:38:54.235 xyz[580:88238] 2015-02-11 07:00:00 +0000

但在我将XCode更新为7.2并将iPod更新为9.2之前,它已经开始工作了。如果它是iOS 9.2错误,请告诉我。

3 个答案:

答案 0 :(得分:2)

13:30PM没有意义。使用24小时制 AM / PM

特别是13:30 PM使用24小时制时不是有效时间。

解决方案:删除PM并从日期格式化程序中删除a

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy MM dd HH:mm";

NSDate *date1 = [dateFormatter dateFromString:@"2015 02 11 12:30"];
NSLog(@"%@", date1);
NSDate *date2 = [dateFormatter dateFromString:@"2015 02 11 13:30"];
NSLog(@"%@", date2);

正确输出

  

2015-12-24 11:42:43.420 Flip [3080:312362] 2015-02-11 11:30:00 +0000
  2015-12-24 11:42:43.422 Flip [3080:312362] 2015-02-11 12:30:00 +0000

(时区差异造成一个人的偏移)

答案 1 :(得分:0)

您可以尝试这样

function decryptRJ256($key,$iv,$string_to_decrypt){
$string_to_decrypt = base64_decode($string_to_decrypt);
$rtn = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $string_to_decrypt, MCRYPT_MODE_CBC, $iv);
$rtn = rtrim($rtn, "\0\4");
return($rtn);}

答案 2 :(得分:0)

尝试使用hh:mma 12小时格式或使用HH:mm 24小时格式

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy MM dd hh:mma";

NSDate *date1 = [dateFormatter dateFromString:@"2015 02 11 12:30PM"];
NSLog(@"Date1: %@", date1);
NSDate *date2 = [dateFormatter dateFromString:@"2015 02 11 01:30PM"];
NSLog(@"Date2: %@", date2);

NSString *str1 = [dateFormatter stringFromDate:date1];
NSString *str2 = [dateFormatter stringFromDate:date2];
NSLog(@"DateStr1: %@", str1);
NSLog(@"DateSTr2: %@", str2);

输出: -

Date1: 2015-02-11 07:00:00 +0000
Date2: 2015-02-11 08:00:00 +0000
DateStr1: 2015 02 11 12:30PM
DateSTr2: 2015 02 11 01:30PM