我正在开发需要 iPhone 日期和时间才能在服务器上发布的应用程序。现在,根据地区和时区,不同设备上的这个日期和时间在世界各地总是不同的。我希望只有 24 小时的本地日期时间,但如果用户更改了设置>日期和时间>24 小时时间>关闭
由于我没有以 'yyyy-MM-dd HH:mm:ss' 格式获取时间,因此它在服务器端产生问题并在服务器上显示错误的日期和时间。有什么非常具体的解决方案吗?
我正在开发需要 iPhone 日期和时间才能在服务器上发布的应用程序。现在,根据地区和时区,不同设备上的这个日期和时间在世界各地总是不同的。我希望只有 24 小时的本地日期时间,但如果用户更改了设置>日期和时间>24 小时时间>关闭
由于我没有以 'yyyy-MM-dd HH:mm:ss' 格式获取时间,因此它在服务器端产生问题并在服务器上显示错误的日期和时间。有什么非常具体的解决方案吗?
如果您需要 24 小时格式的时间,请在 dateFormatter 中使用大写 H:
dateFormatter.dateFormat = @"yyyy MM dd **HH**:mm:ss";
我建议您应该避免将格式化的日期发送到服务器,而是发送 UNIX 时间戳。[[NSDate date] timeIntervalSince1970]
为您提供与时区无关的时间戳,您无需解析。如果您也需要时区,请将其标识符作为附加参数发送。
就像 Costique 说的那样,使用 UNIX 时间戳,但如果您必须使用字符串格式,请在格式字符串中包含时区并在服务器上处理它,您需要类似以下内容:
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
NSLocale *enUSPOSIXLocale = [[[NSLocale alloc]
initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
[dateFormatter setLocale:enUSPOSIXLocale];
[dateFormatter setTimeStyle:NSDateFormatterFullStyle];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ssZZ"];
NSString *transDateStr = [dateFormatter stringFromDate:transDate];
[dateFormatter release];