NSDateFormatter无法在真实设备

时间:2015-07-29 14:02:03

标签: ios objective-c nsdateformatter

我有这个代码在模拟器上完美运行,但在真实设备上它不起作用。

它返回的字符串是nil,为什么?

-(NSString*)metodoFormatoFecha:(NSString*)cadena{

    NSString *trimmedString = [cadena stringByTrimmingCharactersInSet:
                               [NSCharacterSet whitespaceCharacterSet]];

    NSString *newString = [[trimmedString componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]] componentsJoinedByString:@""];

//newString contanain -> 2015-07-28T10:41:01-04:00

    NSDateFormatter *dateStringParser = [[NSDateFormatter alloc] init];
    [dateStringParser setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.ZZZZ"];

    NSDate *date = [dateStringParser dateFromString:newString];

    NSDateFormatter *labelFormatter = [[NSDateFormatter alloc] init];
    [labelFormatter setDateFormat:@"yyyy-MM-dd'\n'HH:mm:ss\nZZZZ"];

    NSString *FechaConFormato = [labelFormatter stringFromDate:date];

    return FechaConFormato;
}

1 个答案:

答案 0 :(得分:1)

我想您的设备上安装了AM / PM时间格式(取决于区域设置)。在模拟器上安装了“24h”时间格式。

您应指向正确的区域设置,否则将使用默认区域设置(使用AM / PM时间格式)。

E.g。

#pragma mark - Lazy instantiating

- (NSDateFormatter *)getServerFormatter {
    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
        _serverFormatter = [NSDateFormatter new];
        _serverFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"fr_FR"];
        _serverFormatter.dateFormat = @"dd/MM/yyyy HH:mm";
    });

    return _serverFormatter;

}
相关问题