将形如:Oct 8, 2016 5:29:44 PM串转换成正常时间在真机上遇到的坑

将形如:Oct 8, 2016 5:29:44 PM串转换成正常时间在真机上遇到的坑

/**
 *  根据传入字符串
 *
 *  @param str 传入的日期字符串  形如:Oct 8, 2016 5:29:44 PM
 *
 *  @return 返回所需要的日期字符串  形如:10-08 06:26:55
 */
+ (NSString *)getStrFromDate:(NSString *)str {
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    [formatter setDateFormat:@"MMM d,yyyy HH:mm:ss aa"];

    //设置时区 这个对时间的处理有时很重要
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
    [formatter setTimeZone:timeZone];
    NSLocale *local = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
    [formatter setLocale:local];
    
    NSDate *date = [formatter dateFromString:str];  //2016-10-08 10:26:55 +0000

    NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];//创建一个日期格式化器
    [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
    [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
    dateFormatter.dateFormat=@"yyyy-MM-dd hh:mm:ss";//指定转date得日期格式化形式
    NSString *str1 = [dateFormatter stringFromDate:date];

    JGLog(@"转换后: %@",str1);
    
    return [str1 substringWithRange:NSMakeRange(0, 11)];
}
原文地址:https://www.cnblogs.com/GJ-ios/p/6145772.html