Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 打印说明时更改日期格式_Ios_Nsdate_Nsdateformatter - Fatal编程技术网

Ios 打印说明时更改日期格式

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

我得到了一些日期在这种格式“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打印相同的“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。