我正在编写一个单元测试来检查我从日期到字符串的转换是否成功。
我通过以下方式将其转换为字符串:
func convertDateToString(date: Date) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
return dateFormatter.string(from: date)
}
并通过以下方式将其转换回来:
func convertStringToDate(string: String) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
return dateFormatter.date(from: string)!
}
如果您尝试在转换前日期和转换后日期使用 Equatable 协议,则会显示它们不相同。但是,如果将前置日期和后置日期都转换为字符串并进行比较,则它们是可等值的。这就是我在前日期和后日期运行 XCAssertEqual 时所说的内容:
XCTAssertEqual failed: ("2020-01-22 19:35:40 +0000") is not equal to ("2020-01-22 19:35:40 +0000")
这看起来与我非常相似。我什至尝试将转换前的日期转换为字符串,然后返回检查日期是否相等,但它们仍然不相等
问题在于Date
被存储为FloatingPoint
值(timeIntervalSinceReferenceDate)。转换时,有小数秒被丢弃Date
to String
并回到Date
。看一眼post.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)