我正在尝试开发一款考勤应用程序,但我对iOS和Firebase中的日期和时间非常困惑。
我使用日期作为关键字,在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日。请问正确的代码是什么,以便我可以获得正确的日期时间戳和时间戳?
print
始终以UTC时间显示日期。而且,2017-09-22 16:00:00 +0000
和2017-09-23 00:00:00 +0800
实际上表示同一时刻。顺便提一下,在Swift 3中完全不要使用NSDate
。 - vadian