为什么 [dateFormatter stringFormat:[NSDate date]] 不能转换为数字
Why [dateFormatter stringFormat:[NSDate date]] can not be converted to a number
//In NSDate category:
+ (NSString *)timeWithFormat:(NSString *)format {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = format;
return [formatter stringFromDate:[NSDate date]];
}
//Swift3.0 invoke method:
let nowHour: Int = Int(NSDate.time(withFormat: "HH"))!//Crash code,I can not be reproduced
我认为在调用 [formatter stringFromDate:[NSDate date]]
时 [NSDate date]
代码可能是 return 值是 nil
。这可能发生吗?如果是这样,如何重现它? NSDate date return nil question
设备信息:
从您的代码来看,我认为这是一个语言环境问题。并非所有语言环境都使用 0-9 来表示时间。
如果我 运行 你的代码覆盖了我可用的所有 740 个区域设置标识符,它在其中的 60 个上失败。下面显示了此代码失败的区域设置标识符的 子集 ,以及它们的(美国)英文名称和它们生成的字符串,格式为 "HH"
for 2 PM:
ar Arabic ١٤
ars Najdi Arabic ١٤
as Assamese ১৪
bn Bengali ১৪
ckb Central Kurdish ١٤
dz Dzongkha ༡༤
fa Persian ۱۴
hi Hindi १४
ks Kashmiri ۱۴
lrc Northern Luri ۱۴
mr Marathi १४
my Burmese ၁၄
mzn Mazanderani ۱۴
ne Nepali १४
pa_Arab Punjabi (Arabic) ۱۴
ps Pashto ۱۴
ur_IN Urdu (India) ۱۴
uz_Arab Uzbek (Arabic) ۱۴
尝试从这些字符串创建一个数字,如 Int("१४")!
将会崩溃,因为 Int 构造函数 returns nil
然后被强制展开 (!
)。
如果您有兴趣获取给定时间的小时数值,我建议您使用适当的日历获取小时日期组件。例如:
Calendar.current.component(.hour, from: date)
//In NSDate category:
+ (NSString *)timeWithFormat:(NSString *)format {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = format;
return [formatter stringFromDate:[NSDate date]];
}
//Swift3.0 invoke method:
let nowHour: Int = Int(NSDate.time(withFormat: "HH"))!//Crash code,I can not be reproduced
我认为在调用 [formatter stringFromDate:[NSDate date]]
时 [NSDate date]
代码可能是 return 值是 nil
。这可能发生吗?如果是这样,如何重现它? NSDate date return nil question
设备信息:
从您的代码来看,我认为这是一个语言环境问题。并非所有语言环境都使用 0-9 来表示时间。
如果我 运行 你的代码覆盖了我可用的所有 740 个区域设置标识符,它在其中的 60 个上失败。下面显示了此代码失败的区域设置标识符的 子集 ,以及它们的(美国)英文名称和它们生成的字符串,格式为 "HH"
for 2 PM:
ar Arabic ١٤
ars Najdi Arabic ١٤
as Assamese ১৪
bn Bengali ১৪
ckb Central Kurdish ١٤
dz Dzongkha ༡༤
fa Persian ۱۴
hi Hindi १४
ks Kashmiri ۱۴
lrc Northern Luri ۱۴
mr Marathi १४
my Burmese ၁၄
mzn Mazanderani ۱۴
ne Nepali १४
pa_Arab Punjabi (Arabic) ۱۴
ps Pashto ۱۴
ur_IN Urdu (India) ۱۴
uz_Arab Uzbek (Arabic) ۱۴
尝试从这些字符串创建一个数字,如 Int("१४")!
将会崩溃,因为 Int 构造函数 returns nil
然后被强制展开 (!
)。
如果您有兴趣获取给定时间的小时数值,我建议您使用适当的日历获取小时日期组件。例如:
Calendar.current.component(.hour, from: date)