打印描述时更改日期格式

时间:2013-04-16 06:38:42

标签: ios nsdate nsdateformatter

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

2 个答案:

答案 0 :(得分:2)

NSLog以固定格式显示NSDate个对象。如果您想以特定格式记录日期,请使用NSDateNSString转换为NSDateFormatter,然后记录字符串。

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

答案 1 :(得分:0)

如果要将UTC中的dateString转换为Local Timezone,则需要分两步完成。

1.首先通过将相应的TimeZone设置为dateFormatter

来形成日期

2.将Local TimeZone设置为dateFormatter,并从日期

形成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);