我想获取本地设备时间并分配给字符串对象。
NSDate* currentDate = [NSDate date];
NSDateFormatter *dateformatter=[[NSDateFormatter alloc]init];
[dateformatter setDateFormat:@"d MMMM , yyyy"];
self.dateSting=[[NSMutableString alloc]init];
self.dateSting = [NSMutableString stringWithFormat:@"%@" ,[dateformatter stringFromDate:currentDate]];
收到的输出= 2013年3月6日
将NSString
转换为NSDate
对象后面的代码
NSDateFormatter *uu=[[NSDateFormatter alloc]init];
[uu setDateFormat:@"d MMMM , yyyy"];
NSDate *yy=[uu dateFromString:self.dateSting];
输出recived = 2013-03-05 18:30:00 +0000 差异在几天之内。
答案 0 :(得分:4)
嗯,解决方案非常简单。 NSDate
始终显示GMT。
从您的个人资料中,我可以看到您当前的位置为INDIA,其中当地时区为GMT + 5.30小时。
您获得的当前输出为2013-03-05 18:30:00 +0000
,如果您添加5.30小时,您将获得2013-03-06 00:00:00 +0000
。请注意,在NSDate
结束时,您可以看到类似+0000
的内容,这会显示时区。
这是您的问题的原因/解决方案,如果您想知道如何解决它,answer is here。
希望现在一切都很清楚。
答案 1 :(得分:1)
尝试这样的事情。
NSDate* currentDate = [NSDate date];
NSLog(@"%@",currentDate);
NSDateFormatter *dateformatter=[[NSDateFormatter alloc]init];
[dateformatter setDateFormat:@"d MMMM hh:mm:ss, yyyy"];
NSLog(@"%@",[dateformatter stringFromDate:currentDate]);
NSDate *yy=[dateformatter dateFromString:[dateformatter stringFromDate:currentDate]];
NSLog(@"%@",yy);
NSDateFormatter *uu=[[NSDateFormatter alloc]init];
[uu setDateFormat:@"d MMMM , yyyy"];
NSLog(@"%@",[uu stringFromDate:yy]);
由于GMT偏移,发生日期和时间的差异。 NSLogging NSDate为您提供偏移时间。偏移量显示要从日期添加或减去的值。在印度它的+5.30。始终确保保留偏移详细信息,因为如果不存在,可能会更改实际日期。希望这会有所帮助。
答案 2 :(得分:0)
dateWithString: 使用国际字符串表示格式(YYYY-MM-DD HH:MM:SS±HHMM)中给定字符串指定的日期和时间值创建并返回NSDate对象。