从 unix 时间戳获取日期和时间

Getting date and time from unix timestamp

我正在尝试从 unix 时间戳获取当前日期和时间,但它总是给我错误的日期这是我当前的代码

 func getDateFromStamp(timeInterval:Int) -> String{
     let date = NSDate(timeIntervalSince1970: TimeInterval(timeInterval))
     let dateFormatter = DateFormatter()
     dateFormatter.dateFormat = "EEEE, MMM d, h:mm a"
     let dateString = dateFormatter.string(from: date as Date)
   return dateString
}

通常 unix 时间戳以毫秒为单位,但 Date 使用秒。您可能需要将时间戳除以 1000。

可能的错误:

我尝试使用毫秒而不是秒。 timeIntervalSince1970: TimeInterval 使用秒。预先将 timeInterval 除以 1000。

或者您没有设置TimeZone。

不要忘记使用 Date() 而不是 NSDate()

这取决于你的结果和输入的参数。

编辑

要更改时区,请使用此代码: dateFormatter.timeZone = TimeZone(abbreviation: "GMT+01:00")

对于Swift 4:

步骤:-1 转换为日期:

    let timestamp = "Your TimeStamp here"

    var dateFromTimeStamp = Date(timeIntervalSince1970: timestamp as! TimeInterval / 1000)

步骤:-2 转换为合适的时区:

    let dateFormatter = DateFormatter();

    let dateFormat = "dd MMM yyyy"; //Any TimeFormat you want
    dateFormatter.dateFormat = dateFormat;
    let formattedDate = dateFormatter.string(from: dateFromTimeStamp);

    dateFormatter.locale = NSLocale.current;
    dateFormatter.timeZone = TimeZone(abbreviation: "GMT"); //Pass Appropriate time zone here.

    dateFormatter.dateFormat = dateFormat as String;
    let sourceDate = dateFormatter.date(from: formattedDate as String);
    print(sourceDate)

希望对您有所帮助。