Swift中如何将字符串转为24小时制的Date类型?
关于Swift中DateFormatter解析24小时制时间的疑问解答
嘿,其实你的代码已经正确拿到了代表22:30的Date对象啦!之所以显示成「Jan 1, 2000 at 10:30 PM」,核心原因是:Date本身并不存储任何显示格式——它本质上只是一个记录时间戳的对象(表示距离某个基准时间的秒数/毫秒数),你看到的12小时制是系统默认的字符串格式化结果,和Date内部存储的时间值无关。
具体说明和验证方法:
- 你的解析逻辑是对的:
dateFormatter.dateFormat = "HH:mm"已经明确告诉系统用24小时制规则解析字符串,所以timeFromString这个Date对象确实对应着2000年1月1日22:30这个时间点(因为只传入了时分,DateFormatter会自动补全默认的年月日为2000-01-01)。 - 如果想验证或输出24小时制的时间字符串,只需要用同一个DateFormatter把Date再转回去就行:
let dateFormatter = DateFormatter() dateFormatter.dateFormat = "HH:mm" let timeAsString: String = "22:30" if let timeFromString = dateFormatter.date(from: timeAsString) { // 将Date转回24小时制字符串 let formatted24hTime = dateFormatter.string(from: timeFromString) print(formatted24hTime) // 输出结果为 "22:30" }
- 直接打印Date对象时,系统会根据当前设备的区域设置和默认格式来展示,所以才会出现12小时制的显示,但这完全不影响Date实际代表的时间是22:30。
内容的提问来源于stack exchange,提问作者Agung
相关产品推荐
相关产品推荐

