Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Objective c 为什么字符串中的NSDate少了一天?_Objective C_Ios_Nsdate_Nsdateformatter - Fatal编程技术网

Objective c 为什么字符串中的NSDate少了一天?

Objective c 为什么字符串中的NSDate少了一天?,objective-c,ios,nsdate,nsdateformatter,Objective C,Ios,Nsdate,Nsdateformatter,如果我尝试: NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyyMMdd"]; 及 我的新NSDate对象将是:2012 0422。为什么少一天 谢谢您遇到时区问题,可以通过添加以下代码行来解决: formatter.timeZone = [NSTimeZone timeZoneWithName:@"GMT"]; 适用于寻找swift 3版本的用户 let f

如果我尝试:

NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyyMMdd"];

我的新NSDate对象将是:2012 0422。为什么少一天


谢谢

您遇到时区问题,可以通过添加以下代码行来解决:

formatter.timeZone = [NSTimeZone timeZoneWithName:@"GMT"];

适用于寻找swift 3版本的用户

let formatter        = DateFormatter()
formatter.timezone   = TimeZone(abbreviation: "GMT")
formatter.dateFormat = "yyyyMMdd"
formatter.date(from: "20120423")

对于使用Swift 3的一行程序

Date.init(dateString: "2014-07-31", format: "yyyy-MM-dd", timeZone: TimeZone.init(abbreviation: "GMT")!)

模拟器或设备中设置了什么区域。它将默认为该时区。它与时区有关。。。差异可能只有几个小时(),甚至只有一个小时,就像
2017-06-02 00:00:00 GMT+1
等于
2017-06-01 23:00:00 GMT+0
,如果你关心年-月-日的值,这似乎是短了一天。真的很有帮助的朋友!!!从最后一天开始,我一直在解决这个问题,而这个简单的句型起了作用:)
Date.init(dateString: "2014-07-31", format: "yyyy-MM-dd", timeZone: TimeZone.init(abbreviation: "GMT")!)