【问题标题】:Apple Swift: how to get current seconds in 1/100 or 1/1000?Apple Swift:如何以 1/100 或 1/1000 获得当前秒数?
【发布时间】:2015-04-22 08:21:23
【问题描述】:
func updateTime() {
    var date = NSDate()
    var calendar = NSCalendar.currentCalendar()
    var components = calendar.components(.CalendarUnitSecond, fromDate: date)
    var hour = components.hour
    var minutes = components.minute
    var seconds = components.second
    counterLabel.text = "\(seconds)"

    var myIndicator = counterLabel.text?.toInt()

    if myIndicator! % 2 == 0 {
        // do this
    } else {
       // do that
    }
}

我想知道如何更改此代码,以便在 counterlabel.text 中显示 1/10 或 1/100 或 1/1000 秒。 就是想不通...谢谢!

【问题讨论】:

  • 请注意,您代码中的所有变量实际上都可以定义为常量(let

标签: ios swift nsdate nscalendar


【解决方案1】:

有一个纳秒的日历单位:

let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitNanosecond, fromDate: date)
let nanoSeconds = components.nanosecond

Swift 3 更新

let date = Date()
let calendar = NSCalendar.current
let components = calendar.dateComponents([.nanosecond], from: date)
let nanoSeconds = components.nanosecond

这给出了以 10-9 秒为单位的秒的小数部分。 对于毫秒,只需将此值除以 106

let milliSeconds = nanoSeconds / 1_000_000

或者,如果您只想显示小数 秒,使用NSDateFormatterSSS 格式。示例:

let fmt = NSDateFormatter()
fmt.dateFormat = "HH:mm:ss.SSS"
counterLabel.text = fmt.stringFromDate(date)

Swift 3 更新

let fmt = DateFormatter()
fmt.dateFormat = "HH:mm:ss.SSS"
counterLabel.text = fmt.stringFromDate(date)

【讨论】:

  • 谢谢,马丁。像魅力一样工作!
猜你喜欢
  • 2016-05-24
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
  • 2013-01-01
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多