【发布时间】:2018-03-04 17:56:45
【问题描述】:
我正在尝试制作一个考勤应用程序,但我对 iOS 和 Firebase 中的日期和时间感到非常困惑。
我使用日期作为 Key,这是我的 Firebase 数据库的结构。
--Employees
--Unique_ID
--Details
Name: John
--Attendance
--dateToday
Timein: 8:00 AM
Timeout: 5:00 PM
BreakStart: 12:00 PM
BreakFinish: 1:00 PM
这是获取我用作密钥的日期时间戳的代码
override func viewDidLoad() {
super.viewDidLoad()
let now = NSDate()
let nowTimeStamp = self.getCurrentTimeStampWOMiliseconds(dateToConvert: now)
// I save this dateToday as Key in Firebase
dateToday = nowTimeStamp
}
func getCurrentTimeStampWOMiliseconds(dateToConvert: NSDate) -> String {
let objDateformat: DateFormatter = DateFormatter()
objDateformat.dateFormat = "yyyy-MM-dd"
let strTime: String = objDateformat.string(from: dateToConvert as Date)
let objUTCDate: NSDate = objDateformat.date(from: strTime)! as NSDate
let milliseconds: Int64 = Int64(objUTCDate.timeIntervalSince1970)
let strTimeStamp: String = "\(milliseconds)"
return strTimeStamp
}
但是当我将其转换回日期时,我得到 2017-09-22 16:00:00 +0000,这是错误的,因为在我的位置是 9 月 23 日。
使用什么代码才能获得正确的日期时间戳和时间时间戳?
【问题讨论】:
-
你的时区是UTC+0800是正确的。
print始终以 UTC 显示Dates。而2017-09-22 16:00:00 +0000和2017-09-23 00:00:00 +0800是完全相同的时间点。顺便说一句:不要在 Swift 3 中使用NSDate。 -
DateFormatter 是要创建的重对象,因此如果您经常调用该函数,请将其导出到函数范围之外
标签: ios swift date firebase timestamp