如何从nsdate创建时间戳(timeintervalsince1970)

时间:2017-09-09 00:26:51

标签: ios swift

我一直在寻找一段时间,并没有找到一个很好的答案。我目前有一个用户发布照片时,它需要一个nsdate(timeIntervalSince1970)并在上传到firebase时将其作为值。一个问题,我将nsdate更改为timeStamp或发布后的分钟/小时/天的当前方式不是Turing out to good,它不正确,当一天过去时,它只显示它发布的时间。我希望我能得到一个答案,或者提到一个算法,它可以将nsdate(timeIntervalSince1970)更改为timeStamp或字符串,它只是给我发布了多少小时,而且每24小时一次,将其更改为1天(s )。我提前道歉,问一些简单的问题,我猜。这是我目前的代码:

    if let seconds = posts[visibli.row].timeStamp {
        let time = NSDate(timeIntervalSince1970: TimeInterval(seconds))
        let formatter = DateFormatter()
        formatter.dateFormat = "hh:mm a"
        labelTime.text = formatter.string(from: time as Date)
    }

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您要找的是DateComponentsFormatter。您可以查看不同的格式化工具Foundation商品,here.

如果你想要一个表示自给定日期以来经过的时间量的字符串,你可以这样说:

if let seconds = posts[visibli.row].timeStamp {
    let time = Date(timeIntervalSince1970: TimeInterval(seconds))
    let dateComponentsFormater = DateComponentsFormatter()
    dateComponentsFormater.unitsStyle = .positional
    let string = dateComponentsFormater.string(from: time, to: Date())
    labelTime.text = string
}

答案 1 :(得分:0)

当前时间戳为字符串。

 public class func getCurrentTimeStamp()->String{
        return String(describing: NSNumber(value: round(NSDate().timeIntervalSince1970 * 1000)))
    }

此函数使用get current timestamp。