首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用新的基金会格式化方法格式化时间间隔?

如何用新的基金会格式化方法格式化时间间隔?
EN

Stack Overflow用户
提问于 2022-07-11 21:03:55
回答 1查看 195关注 0票数 1

我正在尝试在新的基金会格式化程序中使用DateComponentsFormatter。要确定约会的格式,我可以这样做:

代码语言:javascript
运行
复制
Date.now.formatted(.dateTime.hour().minute().second())
// 5:03:17 PM

但是,我正在尝试使用这个新的API来使用DateComponentsFormatter

代码语言:javascript
运行
复制
let duration: TimeInterval = 0

let formatter = DateComponentsFormatter()
formatter.unitsStyle = .positional
formatter.allowedUnits = [.minute, .second]
formatter.zeroFormattingBehavior = [.pad]

let formattedDuration = formatter.string(from: 0)
// 00:00

如何使用用于DateComponentsFormatter的新的基金会格式化程序API来实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-11 22:29:36

时间间隔的格式化方法仅适用于需要用Duration初始化的timeval对象。

代码语言:javascript
运行
复制
let timeInterval: TimeInterval = 125.0
let tmv = timeval(tv_sec: Int(timeInterval), tv_usec: 0)
Duration(tmv)
    .formatted(.time(pattern: .hourMinuteSecond))  // "0:02:05"
Duration(tmv)
    .formatted(.time(pattern: .minuteSecond))      // "2:05"

代码语言:javascript
运行
复制
Duration(
    secondsComponent: Int64(timeInterval),
    attosecondsComponent: 0
).formatted(.time(pattern: .minuteSecond))  // "2:05"

您还可以使用它的静态方法进行初始化:

代码语言:javascript
运行
复制
let timeInterval: TimeInterval = 125.0
var duration: Duration = .seconds(timeInterval)
duration += .milliseconds(789)  // 125.789 seconds
    
duration.formatted(.time(pattern: .minuteSecond))  // "2:06"

如果您需要进一步定制:

代码语言:javascript
运行
复制
duration.formatted(.time(pattern: .minuteSecond(padMinuteToLength: 2)))  // "02:06"
duration.formatted(.time(pattern: .minuteSecond(padMinuteToLength: 2, roundFractionalSeconds: .down)))  // "02:05"
duration.formatted(.time(pattern: .minuteSecond(padMinuteToLength: 2, fractionalSecondsLength: 3)))  // "02:05.789"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72944660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档