1. ホーム
  2. ios

[解決済み] iOS Swift - 現在のローカルタイムと日付のタイムスタンプを取得する

2022-02-24 08:42:48

質問

勤怠管理アプリを作ろうとしているのですが、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日なので間違っています。

正しい日付のタイムスタンプと時間のタイムスタンプを取得するために、どのようなコードを使用すればよいですか?

どのように解決するのですか?

Firebaseのデータベースに現在時刻を保存するために、Unic Epoch Conversationを使用しています。

let timestamp = NSDate().timeIntervalSince1970

と Unix Epoch time を Date() にデコードするためのものです。

let myTimeInterval = TimeInterval(timestamp)
let time = NSDate(timeIntervalSince1970: TimeInterval(myTimeInterval))