SwiftMoment

Join the chat at https://gitter.im/SwiftMoment/Lobby Build Status CocoaPods Compatible Carthage Compatible Platform swiftyness

这个框架的灵感来源于 Moment.js。 其目标如下:

重要提示:此框架支持 iOS 9+、macOS 10.11+、tvOS 9+、watchOS 2+、Xcode 8 和 Swift 3。

安装

SwiftMoment 兼容 CarthageCocoaPods。 使用 CocoaPods,只需将其添加到您的 Podfile 中:

pod 'SwiftMoment'

SwiftMoment 也可以通过 Swift Package Manager 使用。 只需将其添加到您的 Package.swift 文件中的依赖项中:

let package = Package(
    name: "MyPackage",
    dependencies: [
        ...
        .package(url: "https://github.com/akosma/SwiftMoment.git", from: "0.7.1"),
    ],
    ...
)

Mac OS X 注意事项

示例

要使用此库,只需在您的应用程序中 import SwiftMoment

创建新的 moment 实例:

let now = moment()
let yesterday = moment("2015-01-19")

默认情况下,moments 使用当前日期和时间初始化。 您可以为未来的任何时刻或过去创建 moments;您可以通过以不同的格式传递字符串来实现:

let yesterday = moment("2015-01-19")

您也可以通过手动直接指定组件来实现:

let today = moment([2015, 01, 19, 20, 45, 34])

您还可以使用带有以下键的字典:

let obj = moment(["year": 2015,
                    "second": 34,
                    "month": 01,
                    "minute": 45,
                    "hour": 20,
                    "day": 19
                ])

当使用 [String: Int] 字典时,键的顺序无关紧要。 此外,只考虑上面的键,任何其他信息都会被忽略。

Swift 中还有一个对 Int 类型的扩展,用于直接从整数值创建 Duration 值:

let duration = 5.hours + 56.minutes

架构

此库最重要的两个组件是 MomentDuration 结构。 Moment 包装一个 NSDate 实例,而 Duration 包装一个 NSTimeInterval 值。

MomentDuration 都符合 Comparable 协议,并包含所有必需的运算符。 此外,Moment 实例可以相互减去(产生一个 Duration),并且 Duration 实例可以添加到 Moments 以创建新的 moments。

MomentsDurations 尽可能保持不可变。

测试

Swift Moment 包含一组测试,展示了如何使用该框架的不同功能。

要在 macOS 环境中运行 Linux 测试,请使用包含的 Dockerfile。

docker build --tag swiftmoment .
docker run --rm swiftmoment

Playground

该项目包含一个 playground,用于学习如何使用该库。

Moment.js 的区别

贡献者

很多人都在积极帮助开发这个库; 请查看 CONTRIBUTORS 文件以获取完整列表! 感谢大家:)

许可证

本项目根据 BSD 许可证分发。 有关详细信息,请参阅 LICENSE 文件。