代码之家  ›  专栏  ›  技术社区  ›  Xaphann

xcode timePicker返回错误的时间

  •  2
  • Xaphann  · 技术社区  · 12 年前

    我的时间选择器有问题,无法弄清楚我的问题是什么。这是我的代码;

    timePicker.timeZone = [NSTimeZone localTimeZone];
    NSDate *selected = [timePicker date];
    
    NSString *message = [[NSString alloc] initWithFormat:
                         @"The date and time you selected is: %@", selected];
    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"Date and Time Selected"
                          message:message
                          delegate:nil
                          cancelButtonTitle:@"Yes, I did."
                          otherButtonTitles:nil];
    [alert show];
    

    因此,例如,如果我选择下午2:55的时间,警报将返回“2012-08-14 19:55:37+0000”

    它一定是一些超级简单的东西,只是看不见

    2 回复  |  直到 12 年前
        1
  •  4
  •   Kai Mattern    12 年前

    NSDate没有时区的概念。它只是存储中性时间信息。所以你必须修正你的输出以进行补偿。

    您可以创建一个NSDateFormatter实例,然后设置TimeZone:

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"..."];
    
    //Timezone!
    [dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]];
    
    NSString *dateSting = [dateFormatter stringFromDate:myDate];
    
        2
  •  0
  •   Sandeep Yadav    7 年前

    您需要添加UTC和您所在国家/地区时区之间的时间间隔差异,您可以通过以下方式实现:

    (sender.date as NSDate).addingTimeInterval(TimeInterval(NSTimeZone.local.secondsFromGMT()))