我正在以这种格式“04/11/13 19:37:00”获取一些日期我想将此日期转换为本地时区,以下是我正在使用的代码。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"MM/dd/yy HH:mm:ss";
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];
NSDate *date = [dateFormatter dateFromString:dateString];
NSLog(@"date value %@",date);
我面临的问题是当我将鼠标放在“日期”变量上时我正在使用调试器它显示“ 2013-04-12 01:07:00 IST ”这是正确的出来我需要。但是当我使用NSLog打印相同的“日期”变量时,我得到“2013-04-11 19:37:00 +0000”。如何才能获得正确的格式,我需要更改 dateformat 。
答案 0 :(得分:2)
NSLog
以固定格式显示NSDate
个对象。如果您想以特定格式记录日期,请使用NSDate
将NSString
转换为NSDateFormatter
,然后记录字符串。
请记住,记录日期仅用于调试目的。日志中的格式无关紧要。
答案 1 :(得分:0)
如果要将UTC中的dateString转换为Local Timezone,则需要分两步完成。
1.首先通过将相应的TimeZone设置为dateFormatter
来形成日期2.将Local TimeZone设置为dateFormatter,并从日期
形成dateStringNSString *dateString = @"04/16/13 11:12:00";
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter setLocale:enUSPOSIXLocale];
dateFormatter.dateFormat = @"MM/dd/yy HH:mm:ss";
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];
NSDate* date = [dateFormatter dateFromString:dateString];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSString *localDateString = [dateFormatter stringFromDate:date];
NSLog(@"%@",localDateString);