如何在 Swift3 中以秒为单位将字符串更改为分钟?

Posted

技术标签:

【中文标题】如何在 Swift3 中以秒为单位将字符串更改为分钟?【英文标题】:How to change the string in seconds to minutes in Swift3? 【发布时间】:2017-10-19 13:49:11 【问题描述】:

您好,我将时间值作为字符串获取。我得到的数字以秒为单位。现在我想使用 swift3 将秒转换为分钟。

我得到的秒数是: 540 这是几秒钟。

现在我想将秒转换为分钟。 例如它应该显示为 09:00 。

如何使用 Swift3 代码实现这一点。 目前我没有使用任何转换代码。

let duration: TimeInterval = 7200.0

let formatter = DateComponentsFormatter()
formatter.unitsStyle = .positional // Use the appropriate positioning for the current locale
formatter.allowedUnits = [ .hour, .minute, .second ] // Units to display in the formatted string
formatter.zeroFormattingBehavior = [ .pad ] // Pad with zeroes where appropriate for the locale

let formattedDuration = formatter.string(from: duration) 

【问题讨论】:

看到这个答案:***.com/a/46667805/6257435 @DonMag 它不会将我的时间转换为 09:00 抱歉,您可以将其用作起点...前三行将您的持续时间分为小时、分钟和秒...从那里开始,将字符串格式化为需要。 【参考方案1】:

这是一种方法:

let duration: TimeInterval = 540

// new Date object of "now"
let date = Date()

// create Calendar object
let cal = Calendar(identifier: .gregorian)

// get 12 O'Clock am
let start = cal.startOfDay(for: date)

// add your duration
let newDate = start.addingTimeInterval(duration)

// create a DateFormatter
let formatter = DateFormatter()

// set the format to minutes:seconds (leading zero-padded)
formatter.dateFormat = "mm:ss"

let resultString = formatter.string(from: newDate)

// resultString is now "09:00"

// if you want hours
// set the format to hours:minutes:seconds (leading zero-padded)
formatter.dateFormat = "HH:mm:ss"

let resultString = formatter.string(from: newDate)

// resultString is now "00:09:00"

如果您希望将持续时间(以秒为单位)格式化为“一天中的时间”,请将格式字符串更改为:

formatter.dateFormat = "hh:mm:ss a"

现在,结果字符串应该是:

"12:09:00 AM"

当然,这会因地区而异。

【讨论】:

它是否返回到 PM 中 我不明白你的评论......你没有得到字符串“00:00”吗? 是的,我知道了,但它是 24 小时格式,我需要 12 小时格式,我需要同时显示上午和下午 sigh ...好的,未来的提示... 在问题中描述您想要的内容 或者自己动手。 对不起,我一定会在不久的将来看看【参考方案2】:

考虑使用 Swift Moment 框架:https://github.com/akosma/SwiftMoment

let duration: TimeInterval = 7200.0
let moment = Moment(duration)
let formattedDuration = "\(moment.minutes):\(moment.seconds)"

【讨论】:

【参考方案3】:

你可以用这个:

func timeFormatter(_ seconds: Int32) -> String! 
    let h: Float32 = Float32(seconds / 3600)
    let m: Float32 = Float32((seconds % 3600) / 60)
    let s: Float32 = Float32(seconds % 60)
    var time = ""

    if h < 10 
        time = time + "0" + String(Int(h)) + ":"
     else 
        time = time + String(Int(h)) + ":"
    
    if m < 10 
        time = time + "0" + String(Int(m)) + ":"
     else 
        time = time + String(Int(m)) + ":"
    
    if s < 10 
        time = time + "0" + String(Int(s))
     else 
        time = time + String(Int(s))
    

    return time

【讨论】:

你需要改进我所做的事情

以上是关于如何在 Swift3 中以秒为单位将字符串更改为分钟?的主要内容,如果未能解决你的问题,请参考以下文章

使用 JOOQ 在 PostgreSQL 中以秒为单位查找和求和时间戳之间的差异

输出以秒为单位。在 php 中转换为 hh:mm:ss 格式

如何在 PHP 中以毫秒为单位获取当前时间?

如何检查两个日期之间的差异(以秒为单位)?

以秒为单位的转换时间戳值不会反转为 python 中的原始时间戳

以秒为单位将数字拆分为天、小时、分钟和秒?