Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
接收到格式错误的IOS设备时间字符串_Ios_Datetime_Nsdate - Fatal编程技术网

接收到格式错误的IOS设备时间字符串

接收到格式错误的IOS设备时间字符串,ios,datetime,nsdate,Ios,Datetime,Nsdate,在我的IOS应用程序中,我将用户的设备时间发送到我的服务器进行分析。 这是生成发送的设备时间字符串的代码: NSDateFormatter* dateFormatter = [[NSDateFormatter alloc]init]; NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; [dateFormatter setCalendar:

在我的IOS应用程序中,我将用户的设备时间发送到我的服务器进行分析。 这是生成发送的设备时间字符串的代码:

    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc]init];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[dateFormatter setCalendar:gregorianCalendar];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSDate* currentTime = [NSDate date];
NSString* deviceTimeString = [dateFormatter stringFromDate:currentTime];

[gregorianCalendar release];
[dateFormatter release];
我认为这应该涵盖IOS设备可能具有的所有不同日历和设置,并一致地生成可以格式化为datetime的字符串。但事实并非如此。有时,设备可能会发送一些奇怪的信息,例如:

২০১৪-০৫-১৯ ০১:৫১:২৪

我试图将我的测试设备的设置更改为不同的配置,以再现这一点,但我无法做到。是否有其他人遇到此问题?

要独立于设备上的区域设置,请使用本地
en_US\u POSIX

[dateFormat setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];

这还可以处理12小时与24小时的问题。

实际发送到服务器的代码在哪里?这个问题很可能发生在服务器端。请尝试:
[dateFormat setLocale:[NSLocale localewithlocaleignifier:@“en_US_POSIX]”
独立于设备上的区域设置。为什么Zaph的代码可以工作:应用程序默认根据用户的设置设置时间格式。如果用户将其设备设置为以不同的方式显示数字的语言,您将得到这样的结果。en_US_POSIX是一种保证永远保持不变的格式,即使在将来,例如美国或英国的日期格式会发生变化。因此,这段代码将永远有效(好吧,直到9999年底)。@gnasher729谢谢你的完整背景。谢谢你们帮了我很多。