今天在项目中开始接手客户端的签名这个模块,签名这个会在项目结束过后再单独写一下自己的心得!
今天讲讲在签名的过程中我们需要向服务器传送一个Date值,格式要求是格林威治时间,也就是GMT时间!
格式要求是 22 Oct 2015 10:20:35 GMT
而我通过[NSDate Date]获取到的格式是2015-10-22 10:20:35
所以就上网搜寻答案
说的是通过[NSDate Date]这个获取到的时间就是GMT地区的,所以我就觉得是转格式的地方出问题了
但是经过一番尝试后,无论是转格式还是设置时区(其实是我没有设准)都无法得到我想要的结果
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd MM yyyy HH:mm:ss "]; NSString *fixString = [dateFormatter stringFromDate:[NSDate date]]; NSString *dateString = [NSString stringWithFormat:@"%@ GMT",fixString]; MZTLog(@"fixString == %@",fixString); MZTLog(@"nowDate == %@",[NSDate date]);
于是和后台进行交流,让帮忙看看后台的转格式是怎样转的
最终找到源头所在,原来是转换的格式是错误的,并且也没有设置时区为格林威治地区
下列为我想要的结果
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc]init]; NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"GMT"]; [dateFormatter setTimeZone:timeZone];
[dateFormatter setDateFormat:@"d MMM yyyy HH:mm:ss 'GMT'"];
//设置本地化 为"en_US",如果没有这一步,则转化出来的是中国的本地时间,相差了8个小时
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"] ];
NSString *fixString = [dateFormatter stringFromDate:[NSDate date]]; MZTLog(@"fixString == %@",fixString);
MZTLog(@"nowDate == %@",[NSDate date]);
具体的更多的ios dateformatter 格式大全 可以参考下面一篇文章
http://www.open-open.com/lib/view/open1374292431912.html