SwiftPastTen

Swift Unit Tests

⏰🇬🇧 以英式英语方式报时

此软件包包含两个库,可以将像 "7:00" 这样的时钟时间转换为其英式英语口语版本,例如 "It's sevent o'clock."

用法

import SwiftPastTen

var britishTime: String?

// O'clock hours
britishTime = try? SwiftPastTen.live(time: "7:00")
print(britishTime) // Optional("It's seven o'clock.")

// O'clock in the afternoon
britishTime = try? SwiftPastTen.live(time: "14:00")
print(britishTime) // Optional("It's two o'clock in the afternoon.")

// To/Past Fivish minutes like Five, Ten, Twenty and Twenty-five minutes
britishTime = try? SwiftPastTen.live(time: "6:40")
print(britishTime) // Optional("It's twenty to seven AM.")

// Non fivish minutes is read X (hours) Y (minutes) AM/PM
britishTime = try? SwiftPastTen.live(time: "19:19")
print(britishTime) // Optional("It's seven nineteen PM.")

// To/Past Quarter and Half
britishTime = try? SwiftPastTen.live(time: "9:15")
print(britishTime) // Optional("It's quarter past nine AM.")

// Midnight
britishTime = try? SwiftPastTen.live(time: "00:00")
print(britishTime) // Optional("It's midnight.")
britishTime = try? SwiftPastTen.live(time: "23:45")
print(britishTime) // Optional("It's quarter to midnight.")

您可以轻松地将 Date 转换为可以使用 formattedDate 转换的格式化时间

import Foundation
import SwiftPastTen

// 01:11
let date = Date(timeIntervalSince1970: 4300)
var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(secondsFromGMT: 0) ?? calendar.timeZone

let time = SwiftPastTen.formattedDate(date, calendar: calendar)
let tellTime = try? SwiftPastTen.live(time: time)
print(tellTime) // Optional("It's one eleven")

Point-Free Dependencies 用法

在您的 Reducer 中添加 @Dependency(\.tellTime) var tellTime,您将可以访问上面提到的所有函数。

示例

import ComposableArchitecture
import Foundation
import SwiftPastTenDependency

public struct BritishTime: ReducerProtocol {
    public struct State: Equatable {
        public var tellTime = ""
        
        public init(tellTime: String = "") {
            self.tellTime = tellTime
        }
    }

    public enum Action: Equatable {
        case tellTime(Date)
    }

    @Dependency(\.calendar) var calendar
    @Dependency(\.tellTime) var tellTime

    public init() {}

    public var body: some ReducerProtocol<State, Action> {
        Reduce { state, action in
            switch action {
            case let .tellTime(date):
                let time = SwiftPastTen.formattedDate(date, calendar: calendar)
                state.tellTime = (try? tellTime(time: time)) ?? ""
                return .none
        }
    }
}

安装

Xcode

您可以通过将 SwiftPastTen 作为包依赖项添加到 Xcode 项目中。

  1. 文件菜单中,选择Swift Packages › Add Package Dependency...
  2. 在包仓库 URL 文本框中输入“https://github.com/renaudjenny/swift-past-ten
  3. 选择您感兴趣的库之一。请参阅上方

作为包依赖项

编辑您的 Package.swift 以添加您想要的两个可用库之一。

let package = Package(
    ...
    dependencies: [
        .package(url: "https://github.com/renaudjenny/swift-past-ten", from: "1.1.0"),
        ...
    ],
    targets: [
        .target(
            name: "<Your project name>",
            dependencies: [
                .product(name: "SwiftPastTen", package: "swift-past-ten"), // <-- Basic version
                .product(name: "SwiftPastTenDependency", package: "swift-past-ten"), // <-- Point-Free Dependencies library wrapper
            ]),
        ...
    ]
)

使用此库的应用