Ios 打印说明时更改日期格式
我得到了一些日期在这种格式“04/11/13 19:37:00”我想把这个日期转换成当地时区,下面是我使用的代码Ios 打印说明时更改日期格式,ios,nsdate,nsdateformatter,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
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打印相同的“date”变量时,我得到的是“2013-04-11 19:37:00+0000”。如何获得正确的格式任何一种解释都可以,我是否需要更改日期格式
NSLog
以固定格式显示NSDate
对象。如果要以特定格式记录日期,请使用NSDateFormatter
将NSDate
转换为NSString
,然后记录字符串
请记住,记录日期仅用于调试目的。日志中的格式真的不重要。如果要将UTC格式的日期字符串转换为本地时区,需要分两步进行 1.首先通过将相应的时区设置为dateFormatter来形成日期 2.将本地时区设置为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);
NSDate的描述将始终以UTC为单位。您可以看到IST时区比UTC早5.30小时,因此您的日期是正确的。如何将“2013-04-11 19:37:00+0000”转换为本地时区“2013-04-12 01:07:00 IST”这样我假设您得到的时间是GMT,然后您希望将UTC转换为本地时区。如果是这种情况,您可以在dateFormatter中将时区设置为local。