苹果Swift:如何获得1/100或1/1000的当前秒数?

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 } } 

我想知道如何改变这个代码,所以我得到1/10或1/100或1/1000秒显示counterlabel.text。 只是无法弄清楚…谢谢!

有一个纳秒的日历单位:

 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秒为单位。 对于毫秒,只需将该值除以10 6

 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)