TimeInterval转String报错:无法将TimeInterval转为Date类型
问题解决:TimeInterval转String类型错误
错误原因
DateFormatter的string(from:)方法要求参数为Date类型,但你传入的是TimeInterval(Swift中别名是Double),类型不匹配导致报错。
修正代码
你需要先将TimeInterval转换为Date实例,再进行格式化。考虑到这个方法不需要依赖Date实例,建议改为静态方法更合理:
import Foundation extension Date { static func timeIntervalToString(interval: TimeInterval) -> String { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" // 将TimeInterval转为对应Date实例 let targetDate = Date(timeIntervalSince1970: interval) let dateString = dateFormatter.string(from: targetDate) return dateString } }
如果坚持保留实例方法(虽无必要但可正常运行):
import Foundation extension Date { func timeIntervalToString(interval: TimeInterval) -> String { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" let targetDate = Date(timeIntervalSince1970: interval) let dateString = dateFormatter.string(from: targetDate) return dateString } }
补充说明
TimeInterval本质是秒数,代表从1970-01-01 00:00:00 UTC开始的时间偏移量,通过Date(timeIntervalSince1970:)可以将其转换为对应的日期对象,之后就能正常用DateFormatter生成指定格式的字符串。
内容的提问来源于stack exchange,提问作者iosSwift
相关产品推荐
相关产品推荐

