我正在尝试从具有 DateTime 属性的 MongoDB 获取记录。此属性是 ISODate,但通过 Perfect-MongoDB API 作为长数据类型(自 1970 年以来的毫秒数)接收。
代码如下所示:
if var something = dictionary["Something"] as? [String:Any], var intDate = something["$date"] as? Int64
{
let date = Date(timeIntervalSince1970: TimeInterval(intDate/1000))
}
此代码在 Mac OSX 中运行良好。但是在 Linux 中,created["$date"] as? Int64始终是nil.
我尝试了几件事,包括使用DoubleandNSNumber而不是 Int64 但它仍然是nil.
关于如何访问此号码的任何想法?我需要将其转换为可读的日期,而我这样做的方式是TimeInterval()在 1970 年之后的几秒钟内需要一个 Double 值,因此它需要可被 1000 整除并在该步骤中可转换为 Double。
intDate编辑:这是仍然存在的 NSNumber 代码,nil因此不会落入该let date行。something不是零
if var something = dictionary["Something"] as? [String:Any], var intDate = something["$date"] as? NSNumber
{
let date = Date(timeIntervalSince1970: TimeInterval(NSDecimalNumber(decimal:intDate.decimalValue/1000).doubleValue))
}
编辑 2:此案例的示例字典:
var dictionary : [String:Any] = ["SomethingElse":"SomeOtherData","Something":["$date": 1507710414599]]