0

我正在以这种格式“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吗?

4

2 回答 2

2

NSLogNSDate以固定格式显示对象。如果要以特定格式记录日期,请使用 an转换NSDate为an ,然后记录字符串。NSStringNSDateFormatter

请记住,记录日期仅用于调试目的。日志中的格式真的无关紧要。

于 2013-04-16T06:47:00.127 回答
0

如果要将 UTC 中的 dateString 转换为本地时区,则需要分两步进行。

1.首先将对应的TimeZone设置为dateFormatter形成日期

2.设置Local TimeZone为dateFormatter,从date形成dateString

NSString *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);
于 2013-04-16T07:21:04.490 回答