24小时制不是格式化日期

Fah*_*kar 0 objective-c nsdateformatter ios ios7

以下是我所拥有的.

NSString *mss = @"2014-06-25 18:03:59.61";
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
[f setDateFormat:@"YYYY-MM-dd HH:mm:ss.S"];
NSDate *date = [f dateFromString:mss];
NSDateFormatter *f2 = [[NSDateFormatter alloc] init];
NSLog(@"date==%@", date);
[f2 setDateFormat:@"dd/MM/YYYY hh:mm a"];
NSString *s = [[f2 stringFromDate:date] uppercaseString];
NSLog(@"s===%@--", s);
Run Code Online (Sandbox Code Playgroud)

我有2个iPhone和iOS 7最新版本.

  1. iPhone 4s >>时间格式我是24小时格式.
  2. iPhone 5s >>时间格式我有12小时格式.

现在,当我尝试运行上面的代码时,它可以在iPhone 5s(12小时格式)中正常工作,但为iPhone 4s提供24小时格式化日期(24小时格式).

iPhone 4s >> 24小时格式

date==2014-06-25 15:03:59 +0000
s===25/06/2014 18:03--
               ^^^^^ this is problem
Run Code Online (Sandbox Code Playgroud)

iPhone 5s >> 12小时格式

date==2014-06-25 03:03:59 pm +0000
s===25/06/2014 06:03 PM--
Run Code Online (Sandbox Code Playgroud)

知道我该如何解决这个问题?


回答

大问题是我在线下失踪了.

[f2 setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
Run Code Online (Sandbox Code Playgroud)

我不得不使用相同的时区设置两个格式化程序.

Rav*_*avi 7

试试这个

NSString *sel_date= @"2014-06-25 18:03:59.61";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss.S"];
NSDate *date = [dateFormatter dateFromString:sel_date];
[dateFormatter setDateFormat:@"dd/MM/yyyy hh:mm a"];
NSString *dateWithNewFormat = [dateFormatter stringFromDate:date];
NSLog(@"datestring ==== %@",dateWithNewFormat);
Run Code Online (Sandbox Code Playgroud)

输出是

datestring ==== 25/06/2014 06:03 PM
Run Code Online (Sandbox Code Playgroud)

  • @FahimParkar我认为这个解决方案的关键是格式化程序正在重复使用不同的日期格式,因此区域设置和时区在两种情况下都很常见.我一直在问你尝试设置相同的语言环境和时区一段时间了... (2认同)