我在将字符串日期转换为NSDate时遇到问题,因为转换不正确。这是我的代码:
NSString *stringDate = @"6/20/2014 8:38:52 PM";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];
NSDate *timeStamp = [dateFormatter dateFromString:stringDate];
日志总是显示TIMESTAMP: 2014-06-20 12:38:37 +0000
。
如何将其转换为正确的日期?提前谢谢。
答案 0 :(得分:1)
我相信你这样做是为了在日志中显示日期:
NSLog(@"timeStamp = %@", timeStamp);
而是保持日期格式化(全局存储或其他东西)并执行:
NSLog(@"timeStamp = %@", [dateFormatter stringFromDate:timeStamp]);
区别在于第一行代码调用[NSDate description]
来格式化日期,它使用UTC / GMT时区,其中第二行代码使用日期格式化程序中配置的时区(默认情况下)与区域设置的时区相同,并且至少与您用于解析字符串的时区相同。
答案 1 :(得分:0)
添加
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
你在UTC时区得到日期。
答案 2 :(得分:0)
You can use this. It will give you proper output
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[dateComponents setYear:2014];
[dateComponents setMonth:6];
[dateComponents setDay:20];
[dateComponents setHour:8];
[dateComponents setMinute:38];
[dateComponents setSecond:52];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [calendar dateFromComponents:dateComponents];
//NSDate *timeStamp = [dateFormatter dateFromString:stringDate];
NSLog(@"date = %@",date);
//solutions[2247:70b] date = 2014-06-20 08:38:52 +0000 printing date