【问题标题】:presenting Unix Timestamps with Swift使用 Swift 呈现 Unix 时间戳
【发布时间】:2017-12-12 19:23:35
【问题描述】:

使用当前时间戳和给定时间戳,在页面上显示它们的最佳方式是什么?如果给定的时间戳表示“昨天”,则演示文稿应该说昨天。如果给定的时间戳是几分钟或几小时前,它应该只包括多少。等等。最好是从另一个中减去一个并评估差异意味着什么,或者是否有可以使用的内置库或框架?到目前为止,我正在使用以下游乐场:

    let ts = 1499299978.149724
    let current_ts: Double

    let date = NSDate(timeIntervalSince1970: ts)

    let dayTimePeriodFormatter = DateFormatter()

    let totalFormat  = "MMM dd YYYY hh:mm a" //just for reference
    dayTimePeriodFormatter.dateFormat = "hh:mm a" //add to this as desired

    let dateString = dayTimePeriodFormatter.string(from: date as Date)

【问题讨论】:

  • 您的问题似乎是关于格式化两个 Date 实例之间的差异,对吗?请相应地编辑您的标题。您的问题与 Unix 时间戳无关。为什么使用NSDate 而不是Date
  • 请用您想要的输出类型的具体示例更新您的问题。你的描述很模糊。

标签: swift unix-timestamp


【解决方案1】:

这应该让你开始:

    let midnight = startOfToday.timeIntervalSince1970
    let secondsInADay = 86400.0

    if ts > midnight {
        print ("today")
        code
    } else if ts > midnight - secondsInADay {
        print ("yesterday")
        code
    } else if ts > midnight - secondsInADay - secondsInADay {
        print ("2 days ago")
        code
    } else if ts > midnight - secondsInADay * 3 {
        print ("3 days ago")
        code
    }

在“今天”块中,您可以使用类似的过程来检查几秒钟前、几分钟前的情况,否则从当前 ts 中减去 ts,然后除以 60 以获得您需要的数字

【讨论】:

  • 不要使用 86400 秒作为一天的持续时间。如果时钟根据夏令时调整,一天可以有 23 或 25 小时。
  • 什么是startOfToday?仅供参考 - 不要使用这种方法。使用适当的Calendar 方法。
  • 所以不要使用这个而是使用其他东西?适当的东西。不打算实际回答只是批评。我用过,效果很好。
猜你喜欢
  • 1970-01-01
  • 2013-03-23
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 2011-08-26
  • 2015-11-18
  • 1970-01-01
相关资源
最近更新 更多