Ios 在NSDate()中每秒更新一次时间函数-Swift
我有一个函数,可以给我一个打开应用程序的时间,但我不希望它是静态的,我希望它是动态的,每秒钟更新一次。我以为这是一个循环,但我不知道如何着手去做。做一个循环可能有效,但如果你有更好的方法,请回答。以下是我的功能:Ios 在NSDate()中每秒更新一次时间函数-Swift,ios,swift,Ios,Swift,我有一个函数,可以给我一个打开应用程序的时间,但我不希望它是静态的,我希望它是动态的,每秒钟更新一次。我以为这是一个循环,但我不知道如何着手去做。做一个循环可能有效,但如果你有更好的方法,请回答。以下是我的功能: func timeNowString() -> NSString { let date = NSDate() var outputFormat = NSDateFormatter() outputFormat.locale = N
func timeNowString() -> NSString {
let date = NSDate()
var outputFormat = NSDateFormatter()
outputFormat.locale = NSLocale(localeIdentifier:"en_US")
outputFormat.dateFormat = "HH:mm:ss"
let timeString = outputFormat.stringFromDate(date)
return timeString;
}
问题:如何使此函数动态化?所以它每秒钟都在更新,而不是一个静态标签
如果您有任何问题,请在下面进行评论。试试这个。您需要添加一个标签和一个按钮,将它们连接到textLabel并启动iAction。您可以对此进行修改以添加小时(此处仅为分钟/秒),并在需要时添加计时器。invalidate()
import UIKit
class ViewController: UIViewController {
@IBOutlet var timeLabel: UILabel!
@IBAction func start(sender: AnyObject) {
var timer = NSTimer()
if !timer.valid {
let selector : Selector = "countTime"
timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target:self, selector: selector, userInfo: nil, repeats: true)
startTime = NSDate.timeIntervalSinceReferenceDate()
}
let timeNow = timeNowString() as String
for item in timeNow {
time = timeNow.componentsSeparatedByString(":")
}
}
var time = [String]()
var startTime = NSTimeInterval()
override func viewDidLoad() {
super.viewDidLoad()
}
func countTime() {
var currentTime = NSDate.timeIntervalSinceReferenceDate()
var elapsedTime: NSTimeInterval = currentTime - startTime
var adjustedTime = Int(elapsedTime) + 3600*time[0].toInt()! + 60*time[1].toInt()! + time[0].toInt()!
var hours = Int(Double(adjustedTime)/3600.0)
let minutes = Int(Double(adjustedTime - hours*3600)/60.0)
let seconds = adjustedTime - hours*3600 - minutes*60
let startHours = hours > 9 ? String(hours):"0" + String(hours)
let startMinutes = minutes > 9 ? String(minutes):"0" + String(minutes)
let startSeconds = seconds > 9 ? String(seconds):"0" + String(seconds)
timeLabel.text = "\(startHours):\(startMinutes):\(startSeconds)"
}
func timeNowString() -> NSString {
let date = NSDate()
var outputFormat = NSDateFormatter()
outputFormat.locale = NSLocale(localeIdentifier:"en_US")
outputFormat.dateFormat = "HH:mm:ss"
let timeString = outputFormat.stringFromDate(date)
return timeString;
}
}
可能是NSTimer或类似的东西,可能在后台线程中有日期和格式逻辑(如果它太密集)。@millesmith我只是想实时显示时间,这样行吗?@grapeaplesauce是的,行。阅读。@TheParamagneticCroissant在我的案例中如何使用NSTimer您阅读了官方文档,然后使用它。这只是从0开始计算。您如何使它从实时开始计算?您必须获得实时并使用我给您的方法从那里开始计算。我从您的代码中假设您知道如何以正常日期格式获取当前时间。
func timeNowString()->NSString{let date=NSDate()var outputFormat=NSDateFormatter()outputFormat.locale=NSLocale(localeIdentifier:“en_US”)outputFormat.dateFormat=“HH:mm:ss”让timeString=outputFormat.stringFromDate(date)return timeString;}
是获取实时的代码,但如何在代码中实现它。谢谢你,你在我所有的问题上都帮了我很大的忙。请试一试。让我们一起来。