ios - NSDate 在模拟器和设备(ipad)中不同

标签 ios objective-c ipad nsdate nsdateformatter

您好,我在我的项目中将 GMT 时间转换为本地时间 - 我在所有模拟器和 iPhone/iPod 中都得到了正确的值 - 但是当我在 iPad 中运行它时,我得到的是 null, 这是我的代码-

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"HH:mm:ss";
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];
NSDate *startDate = [dateFormatter dateFromString:@"14:37:00"];  


NSLog(@"startDate---%@",startDate);

//This is startDate---2000-01-01 14:37:00 +0000 (in simulator/iPod/iphone)
 //  startDate---(null)  (in ipad)

问题出在用户 ipad 的时间格式上——如果它是 12 小时格式——那么上面的代码结果为 null 我该怎么办??

最佳答案

因为你的时间格式在 ipad 设备上设置为 12 小时,日期字符串是 24 小时格式看字符串@"14:37:00"。

使用

dateFormatter.dateFormat = @"hh:mm:ss";
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];

Reference

如果你想强制它进入 12 小时模式,无论用户的 24/12 小时模式设置如何,你都应该将语言环境设置为 en_US_POSIX。

使用 hh 而不是 HH。

hh 通常是 12 小时制,而 HH 通常是 24 小时制。

一个很好的官方引用,as linked by Apple themselves , 是 here .另一个好表是 here ,如 Zaph 所述。

关于ios - NSDate 在模拟器和设备(ipad)中不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25364542/

相关文章:

ios - Objective C 到 Swift - DoWithBlock

iphone - iPad 中的洪水填充速度太慢

iphone - 如何在 iOS5 的分段控件中自定义突出显示的文本颜色?

objective-c - 如何使用核心文本和属性字符串伪造上标和下标?

ios - Swift:在解雇的完成处理程序中呈现 VC

ios - 'MyClass' 不可用 : cannot find Swift declaration for this class - Simulator

ios - Swift tableview 找不到接受所提供参数的 'subscript' 重载

ios - 使用乘数自动布局在 xcode 8 的界面生成器中为不同的屏幕尺寸创建自动调整大小的 View

ios - iOS 中的奇怪崩溃

objective-c - 值/对象的 NSDictionary 键?