24小时制不是格式化日期

时间:2014-08-12 08:55:06

标签: ios objective-c ios7 nsdateformatter

以下是我所拥有的。

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);

我有2部带有 iOS 7最新版本的iPhone

  1. iPhone 4s>>我的时间格式是24小时格式。
  2. iPhone 5s>>我的时间格式是12小时格式。
  3. 现在,当我尝试运行上面的代码时,它可以在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
    

    iPhone 5s>> 12小时格式

    date==2014-06-25 03:03:59 pm +0000
    s===25/06/2014 06:03 PM--
    

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


    答案

    大问题是我在下面缺席了。

    [f2 setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
    

    我必须使用相同的时区设置两个格式化程序。

1 个答案:

答案 0 :(得分: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);

输出

datestring ==== 25/06/2014 06:03 PM