0

我正在开发一个应用程序,该应用程序允许用户从时间的 UITableView(半小时增量)中选择日期/时间,直到我得到最后的时间,一切都很顺利。由于是格林威治标准时间,手机会自动将其转换为当地时间并取消日程安排。他们选择的时间需要转换为 GMT + 偏移量(因为用户选择的是本地时间而不是 GMT),这样他们选择的时间就是添加到他们日历中的时间。

NSDate* newDate = [[scheduled objectForKey:@"date"] dateByAddingTimeInterval:1800.0*indexPath.row];
    [scheduled setObject:newDate forKey:@"date"];

正如您现在所看到的,我只是采用基本 GMT 并为每个 indexPath.row 添加 1800 秒(30 分钟),这可以在 GMT 中获得正确的时间,但实际上我需要从用户当前时区做同样的事情(而且我猜测将其转换为 GMT,因为您应该将时间存储在 GMT 中)

4

1 回答 1

0
NSTimeInterval timeZoneOff = [[NSTimeZone systemTimeZone] secondsFromGMTForDate:[scheduled objectForKey:@"date"]];

NSDate *gmtDate = [[scheduled objectForKey:@"date"] dateByAddingTimeInterval:-timeZoneOff];

奇迹般有效。

于 2012-10-03T01:29:57.427 回答