2016-02-28 48 views
0

在我使用AVFoundation的應用程序中,我使用NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "showCurrentAudioProgress", userInfo: nil, repeats: true)viewDidLoad中調用功能showCurrentAudioProgress()。我想返回這種時間格式00:00:00,但我有一個很大的問題。全功能如下:如何以格式00:00:00打印音頻時間使用AVFundation

var musicPlayer = AVAudioPLayer() 

func showCurrentAudioProgress() { 
    self.totalTimeOfAudio = self.musicPlayer.duration 
    self.currentTimeOfAudio = self.musicPlayer.currentTime 

    let progressToShow = Float(self.currentTimeOfAudio)/Float(self.totalTimeOfAudio) 
    self.audioProgress.progress = progressToShow 

    var totalTime = self.musicPlayer.duration 
    totalTime -= self.currentTimeOfAudio 

    self.currentTimeTimer.text = "\(currentTimeOfAudio)" 
    self.AudioDurationTime.text = "\(totalTime)" 
} 

我如何轉換的時間,我recive使用AVAudioPlayer 00:00:00?

回答

4

您可以使用NSDateComponentsFormatter .Positional風格和zeroFormattingBehavior .Pad顯示你的時間間隔爲:

extension NSTimeInterval { 
    struct DateComponents { 
     static let formatterPositional: NSDateComponentsFormatter = { 
      let formatter = NSDateComponentsFormatter() 
      formatter.allowedUnits = [.Hour,.Minute,.Second] 
      formatter.unitsStyle = .Positional 
      formatter.zeroFormattingBehavior = .Pad 
      return formatter 
     }() 
    } 
    var positionalTime: String { 
     return DateComponents.formatterPositional.stringFromTimeInterval(self) ?? "" 
    } 
} 

print(120.positionalTime) // 0:02:00 

如果你想使用字符串格式初始化器,你可以看看這個answer

1

最簡單的解決方法是單獨獲取hoursminutesseconds,並將組合合併爲一個字符串。爲了提高你可以把它放到String類或擴展名中。

let totalTimeOfAudio = 26343 // number of seconds just for an example 

let secondsInMinute = 60 
let minuteInHour = 60 
let secondsInHour = secondsInMinute * minuteInHour 

let hours = Float(totalTimeOfAudio/(secondsInHour)) 
let minutes = Float(totalTimeOfAudio/minuteInHour % minuteInHour) 
let seconds = Float(totalTimeOfAudio % secondsInMinute) 

let string: NSString = NSString(format: "%02.f:%02.f:%02.f", hours, minutes, seconds) 
+0

'minues'有些問題,因爲即使是下一分鐘它仍然是相同的值 – PiterPan

相關問題