这是下面的数据库。我需要获取时间戳的"caption"子项,并将其转换为 Xcode 中的日期格式。
"UserS" : {
"K1eqsVZfKGgIf0sS1UZcPNxY62x1" : {
"Education" : "William Taft Elementary",
"PhotoPosts" : "https://firebasestorage.googleapis.com/v0/b/daylike-2f938.appspot.com/o/images%2FPhotoPosts?alt=media&token=fd92856e-f7d2-4558-82c4-ee49f580icc5e",
"caption" : 1563277511065,
"users" : "jane19@aol.com"
},
这是我在超级视图下加载的内容。
let databaseRef = Database.database().reference()
let uid = Auth.auth().currentUser!.uid
databaseRef.child("UserS").child(uid).child("caption").observeSingleEvent(of: .value, with: { (snapshot) in
guard let message = snapshot.value as? [String:String] else { return }
let caption = message["caption"]
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss.SSSSxxx"
guard let date = dateFormatter.date(from: caption!) else {
fatalError("ERROR: Date conversion failed due to mismatched format.")
}
if (snapshot.exists()){
print ("mmmmmmm")
}else{
print("badddddd")
}
})
最后,我想以日期格式打印出时间戳,以便我可以检查它是 24 小时前的。
13 位时间戳"是自 1970 年 1 月 1 日 UTC 以来的milliseconds
数。
自该时间点以来,Date
已经具有时间戳的初始值设定项。唯一的区别是它的seconds
数,而不是milliseconds
。
因此,您唯一要做的就是将其除以 1000:
// skipping unrelevant boilerplate
// assuming caption is Int
let date = Date(timeIntervalSince1970: TimeInterval(caption)/1000.0) // for `1563277511065` it would be `"Jul 16, 2019 at 11:45 AM"`(UTC)
// skipping unrelevant boilerplate
编辑:
要检查时间戳中的日期是否"早于"24 小时,您有以下几种选择:
获取
date
和now
之间的差异,并检查它是否少于 24 小时:let secondsInDay = 86400 if (-date.timeIntervalSinceNow < secondsInDay) { … } // negative, because that date would be in the past
使用日历前获取一天:
let calendar = Calendar.autoupdatingCurrent // or whatever you prefer let dayBefore = calendar.date( byAdding: .day, value: -1, to: Date(), wrappingComponents: true)! if (date > dayBefore) { … }
既然你听UserS->caption
那么snapshot.value
就是一个Int
。 所以你需要
databaseRef.child("UserS").child(uid).child("caption").observeSingleEvent(of: .value, with: { (snapshot) in
guard let caption = snapshot.value as? Int else { return }
print(caption)
let date = Date(timeIntervalSince1970: TimeInterval(caption)/1000.0)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss.SSSSxxx"
let res = dateFormatter.string(from: date)
print(res)
}
编辑:
if Calendar.current.dateComponents([.day], from:date, to: Date()).day! > 0 {
/// at least 1 day passed
}