PositionalDateComponentsFormatter

PositionalDateComponentsFormatter 是一个 Formatter 的实现,能够从各种输入输出人类可读的按位置排列的时间字符串。

此实现扩展了 DateComponentsFormatter 的行为(当设置为 positional 样式时),增加了对毫秒的支持。

安装

PositionalDateComponentsFormatter 可以通过 Swift Package Manager 安装。

.package(url: "https://github.com/MrAsterisco/PositionalDateComponentsFormatter", from: "<see GitHub releases>")

最新版本

要查找最新版本,请查看此仓库的 Releases 选项卡。

用法

PositionalDateComponentsFormatter 继承自 Formatter,因此您可以调用通用的 string(for:) 方法来获取格式化的字符串。

PositionalDateComponentsFormatter 可以格式化以下输入值

let formatter = PositionalDateComponentsFormatter()

// TimeInterval
let timeInterval: TimeInterval = 3665.55231354654
formatter.string(for: timeInterval) // -> 01:01:05.552

// DateComponents
var dateComponents = DateComponents()
dateComponents.hour = 13
dateComponents.minute = 28
dateComponents.second = 17
dateComponents.nanosecond = 120_345_112
formatter.string(for: dateComponents) // -> 13:28:17.120

// Date
let timeInterval = 753013811.1110001
let date = Date(timeIntervalSince1970: timeInterval)
formatter.string(for: date) // -> "11:30:11.111"

// Measurement
let measurement = Measurement(value: 120, unit: UnitDuration.milliseconds)
formatter.string(for: date) // -> "00:00:00.120"

您可以使用 allowedUnits 属性自定义在输出字符串中显示的单位。 您还可以通过更改 zeroFormattingBehavior 属性来自定义值为零的单位的行为。

兼容性

PositionalDateComponentsFormatter 需要 iOS 13.0 或更高版本macOS 10.15 或更高版本watchOS 4.0 或更高版本和 *tvOS 11.0 或更高版本

贡献

欢迎所有贡献来扩展此库。 Fork 此仓库,进行您想要的更改,然后打开一个 Pull Request。

如果您对代码库进行更改,我不会强制执行编码风格,但我可能会要求您根据库的其余部分的制作方式进行更改。

状态

此库正在进行积极开发。 即使大多数 API 都非常简单明了,它们将来也可能会发生变化; 但您不必为此担心,因为发布将遵循 语义化版本 2.0.0

许可证

PositionalDateComponentsFormatter 在 MIT 许可证下分发。 查看 LICENSE 了解详情。