iOS時(shí)間轉(zhuǎn)換 真機(jī)和模擬器錯(cuò)誤 輸出為空的解決方案

iphone中NSDateFormatter模擬器可以正常顯示,但在真機(jī)上不行,轉(zhuǎn)換后的NSString為NULL,部分代碼如下:


- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    
    NSString *dateStr = @"Dec 29, 2016 11:19:39 PM";
    NSDate *date = [self dateFromString:dateStr];
    NSLog(@"%@",date);  //模擬器上正常,真機(jī)打出來為Null
    NSLog(@"%@",[self stringFromDate:date]);

}

//NSDate轉(zhuǎn)NSString
-(NSString *)stringFromDate:(NSDate *)date
{
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setLocale:locale];
    //設(shè)置格式:zzz表示時(shí)區(qū)
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    //NSDate轉(zhuǎn)NSString
    NSString *currentDateString = [dateFormatter stringFromDate:date];
    //輸出currentDateString
    NSLog(@"%@",currentDateString);
    return currentDateString;
}

//NSString轉(zhuǎn)NSDate
-(NSDate *)dateFromString:(NSString *)string
{
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
    [formatter setLocale:locale];
    [formatter setDateFormat:@"MMM dd, yyyy K:mm:ss aa"];
    //NSString轉(zhuǎn)NSDate
    NSDate *date=[formatter dateFromString:string];
    return date;
}

找了半天,終于找到原因:
在真機(jī)運(yùn)行需要設(shè)置Local,添加下面一段代碼就OK:

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatter setLocale:locale];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容