如何在Swift中存儲(chǔ)和格式化天數(shù)/周數(shù)/月數(shù)?

我想創(chuàng)建的不是Date而是簡單的時(shí)間量(即持續(xù)時(shí)間),其單位可以是天、周或月,然后將它們很好地格式化為“1天”、“7天”、”3周“、”1個(gè)月“等。

然而DurationMeasurement<UnitDuration>初始值設(shè)定項(xiàng)都不接受這些單位。

// Type 'Duration' has no member 'days'
let duration: Duration = .days(7)
// Type 'UnitDuration' has no member 'days'
let measurement: Measurement<UnitDuration> = .init(value: 7, unit: .days)

我試圖擴(kuò)展UnitDuration,但它不允許將單位自動(dòng)格式化為復(fù)數(shù)。

extension UnitDuration {
    static let days = UnitDuration(
        symbol: "days",
        converter: UnitConverterLinear(coefficient: 60 * 60 * 24)
    )
}

let measurement: Measurement<UnitDuration> = .init(value: 1, unit: .days)
measurement.formatted(.measurement(width: .wide, usage: .asProvided)) // "1 days" :(

目的是得到這樣的東西:

let onDay: Duration = .days(1)
let eightWeeks: Duration = .weeks(8)
oneDay.formatted() // "1 day"
eightWeeks.formatted() // "8 weeks"
? 最佳回答:

正如Fabio所說,您可以使用DateComponentsFormatter

formatter = DateComponentsFormatter()
formatter.unitsStyle = .full
formatter.allowedUnits = [.weekOfMonth]

let components = DateComponents(weekOfMonth: 13)

if let string = formatter.string(from: components) {
    print(string)
} else {
    print("Unable to convert components to a String")
}

該代碼按預(yù)期輸出“13周”。

Edit:

DateComponentsFormatter還有一個(gè)func string(from: TimeInterval)函數(shù),它將花費(fèi)任意的秒數(shù),并用您要求的單位來表示。

主站蜘蛛池模板: 日韩免费视频一区| 性色av一区二区三区夜夜嗨 | 亚洲国产高清在线一区二区三区| 深夜福利一区二区| 成人丝袜激情一区二区| 在线中文字幕一区| 一区二区三区四区视频| 91久久精一区二区三区大全| 一区二区三区视频网站| 日本一区二区三区日本免费| 亚洲av乱码中文一区二区三区| 国产探花在线精品一区二区| 一区在线免费观看| 一区二区三区福利| 一区二区三区四区国产| 国产AV天堂无码一区二区三区| 无码丰满熟妇浪潮一区二区AV| 伊人色综合视频一区二区三区| 狠狠色综合一区二区| 中文字幕一区二区三区人妻少妇| 中文字幕亚洲综合精品一区| 久久精品国产第一区二区三区| 无码精品人妻一区二区三区人妻斩| 国产精品亚洲一区二区三区在线| 久久久久国产一区二区三区| 国产一区二区在线观看app| 中文字幕乱码一区二区免费| 亚洲午夜福利AV一区二区无码| 精品亚洲综合在线第一区| 亚洲AV无码一区二区三区系列| 无码少妇一区二区| 日韩一区二区三区四区不卡| 怡红院一区二区在线观看| 天码av无码一区二区三区四区 | 日本精品视频一区二区三区| 国产在线第一区二区三区| 亚洲国产av一区二区三区| 中文字幕精品亚洲无线码一区 | 97se色综合一区二区二区| 亚洲丰满熟女一区二区哦| 日韩熟女精品一区二区三区|