【发布时间】:2013-04-10 13:11:23
【问题描述】:
我正在尝试将时间戳 (yyyy-MM-dd HH:mm:ss) 从 mySQL(在 apache 上运行)传递到 iOS。目前,mysql设置为这个时区:
default-time-zone='+00:00'
当我将此时间戳传递给 iOS 时,我使用此代码将字符串转换为 NSDate:
-(NSDate *)formatDateWithString:(NSString *)dateString{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate* date = [dateFormatter dateFromString:dateString];
NSLog(@"Formatted Timestamp: %@ - Original Timestamp: %@", date,dateString);
return date;
}
这是 2013-04-17 16:33:56 的 mySQL 时间戳的输出:
Formatted Timestamp: 2013-04-17 23:33:56 +0000 - Original Timestamp: 2013-04-17 16:33:56
为什么 iOS 会增加 7 小时? (仅供参考 - 我位于加利福尼亚州旧金山,所以我确信这与我的时区是 PDT 有关。只是不确定为什么当我没有指定它时它会以这种方式转换)。
在我的应用中尽可能使用最“通用”的时间戳很重要,因为我的用户可能遍布世界各地,并且不想对大量转换大惊小怪。我希望能够将时间戳存储在 mySQL 中,然后只需比较存储的服务器时间戳和当前服务器时间戳之间的差异。如果可能的话,每次我需要进行比较时,我宁愿不必使用网络请求来获取“服务器时间”。
更新
通过将这行代码添加到我的 dateFormatter 中,现在似乎两次正确匹配:
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
但是,无论一年中的什么时候,任何人都可以验证它始终会继续匹配吗? (即夏令时等)
【问题讨论】:
标签: mysql ios timezone timestamp nsdate