我得到了这个虚空的日期和时间:
-(void)getDay
{
NSDate *choice = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
[dateFormatter setDateFormat:@"yy"];
year = [[dateFormatter stringFromDate:choice] intValue];
[dateFormatter setDateFormat:@"MM"];
month = [[dateFormatter stringFromDate:choice] intValue];
[dateFormatter setDateFormat:@"dd"];
day = [[dateFormatter stringFromDate:choice] intValue];
[dateFormatter setDateFormat:@"HH"];
hour = [[dateFormatter stringFromDate:[NSDate date]] intValue];
// NSLog(@"hour: %d",hour);
[dateFormatter setDateFormat:@"mm"];
minute = [[dateFormatter stringFromDate:[NSDate date]] intValue];
[dateFormatter setDateFormat:@"ss"];
second = [[dateFormatter stringFromDate:[NSDate date]] intValue];
}
如果我看到日志时间...它给了我当地时间的正确时间,但是当我把这个值放在另一个NSDate中我需要创建小时更改并成为格林威治时间时,这里是代码我使用方法:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm:SS"];
// NSLog(@"hour: %d",hour);
//this log still gives me the right hour
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
self.myDate = [dateFormatter dateFromString:[NSString stringWithFormat:@"%d-%d-%d %d:%d:%d",day,month,year,hour,minute,second]];
NSLog(@"my date: %@",myDate);
这最后一个日志如下所示:
2013-08-31 05:14:12.905 myApp [25987:904] my date:2013-08-31 15:14:00 +0000
我的小时应该是5:14但是格林威治时间是15:14 ... 为什么会发生这种情况?如何获得当地时间而不是格林威治时间? 谢谢你的帮助。
答案 0 :(得分:0)
您的代码没有任何问题。问题是NSLog以GMT时间显示日期。尝试在NSLog中放置断点,您将看到self.myDate具有正确的时间,而NSLog以GMT显示时间。
我意识到在格式化程序字符串中你使用SS作为秒。你必须使用ss。