0

我得到了这个空白的日期和时间:

-(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] 我的日期:2013-08-31 15:14:00 +0000

我的时间应该是 5:14,但格林威治时间是 15:14……为什么会发生这种情况,我怎样才能得到当地时间而不是格林威治时间?谢谢你的帮助。

4

1 回答 1

0

您的代码没有任何问题。问题是 NSLog 以 GMT 时间显示日期。尝试在 NSLog 中放置一个断点,您将看到 self.myDate 具有正确的时间,而 NSLog 以 GMT 显示时间。

我意识到在格式化程序字符串中您正在使用 SS 几秒钟。你必须使用 ss。

于 2013-08-31T15:33:42.150 回答