如何从iDevices获得24小时格式时间?

时间:2010-12-07 05:34:28

标签: ios iphone datetime nsdateformatter nstimezone

我正在处理需要iPhone日期和时间在服务器上发布的应用程序。现在,基于区域和时区,这个在不同设备上的日期和时间总是在世界各地不同。我想在24小时内有本地日期时间,但是如果用户更改了设置>日期&时间> 24小时时间>关闭

由于我没有得到'yyyy-MM-dd HH:mm:ss'格式的时间,因此在服务器端创建问题并在服务器上显示错误的日期和时间。对此有什么非常具体的解决方案吗?

3 个答案:

答案 0 :(得分:2)

我建议你应该避免将格式化日期发送到服务器并改为发送UNIX时间戳。 [[NSDate date] timeIntervalSince1970]为您提供了一个与时区无关的时间戳,您无需解析。如果您还需要时区,请将其标识符作为附加参数发送。

答案 1 :(得分:2)

如果您需要24小时格式的时间,请在dateFormatter中使用大写H:

dateFormatter.dateFormat = @"yyyy MM dd **HH**:mm:ss";

答案 2 :(得分:0)

与Costique说的一样,使用UNIX时间戳,但是如果你必须以String格式包含它,在格式字符串中包含时区并在服务器上处理它,你需要这样的东西:

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];