如何使用 DateToolsSwift 添加日期?

问题描述 投票:0回答:3

我正在使用一个名为 DateToolsSwift 的包。现在,每当我想向 Date 对象添加一天时,我都会这样做

let date = Date().add(TimeChunk(seconds: 0, minutes: 0, hours: 0, days: 3, weeks: 0, months: 0, years: 0))

这段代码太长了,感觉不太对劲。所以我的问题是,这是在 DateToolsSwift 中执行此操作的方法吗?还是我做错了?

swift date cocoapods
3个回答
6
投票

*不使用 DateToolsSwift。例如,如果您想在 1970 年 1 月 1 日添加 3 天

let aDate = Date(timeIntervalSince1970: 0)
var dateComponent = DateComponents()
dateComponent.day = 3
let next3Days = Calendar.current.date(byAdding: dateComponent, to: aDate)

同样,如果您想添加今天的天数,也可以设置

aDate = Date()

编辑

或者,来自@CodeDifferent

let next3Days = Calendar.current.date(byAdding: .day, value: 3, to: aDate)!

3
投票

DateToolsSwift 包在 Integer+DateTools.swift 中定义了扩展方法,允许简单地创建

TimeChunk
s,例如
3.days
2.weeks
。因此你可以做

let date = Date().add(3.days)

或者,由于 DateToolsSwift 还定义了自定义

+
运算符,

let date = Date() + 3.days

0
投票

如果您想要一次拍摄中添加任意时间的扩展可能性

extension Date {
    
    public enum DateElement {
        case seconds(Int)
        case minutes(Int)
        case hours(Int)
        case days(Int)
        case months(Int)
        case years(Int)
    }
    public func add(_ time: DateElement...) -> Date? {
        var dateComponent = DateComponents()
        for e in time {
            switch e {
            case .seconds(let seconds):
                dateComponent.second = seconds
            case .minutes(let minutes):
                dateComponent.minute = minutes
            case .hours(let hours):
                dateComponent.hour = hours
            case .days(let days):
                dateComponent.day = days
            case .months(let months):
                dateComponent.month = months
            case .years(let years):
                dateComponent.year = years
            }
        }
        return Calendar.current.date(byAdding: dateComponent, to: self)
    }
}

let somewhereLater = Date().add(.hours(2), .days(5), .months(1))
© www.soinside.com 2019 - 2024. All rights reserved.