我在试着把这个月的第一天也是最后一天送到Swift .

到目前为止,我有以下几点:

let dateFormatter = NSDateFormatter()
let date = NSDate()
dateFormatter.dateFormat = "yyyy-MM-dd"
let calendar = NSCalendar.currentCalendar()
let components = calendar.components([.Year, .Month, .Day, .Hour, .Minute, .Second], fromDate: date)

let month = components.month
let year = components.year

let startOfMonth = ("\(year)-\(month)-01")

但是我不知道怎么才能得到最后一次约会.有没有我错过的内置方法?显然,它必须考虑闰年等因素.

推荐答案

你只需简单地

let components = calendar.components([.Year, .Month], fromDate: date)
let startOfMonth = calendar.dateFromComponents(components)!
print(dateFormatter.stringFromDate(startOfMonth)) // 2015-11-01

要获得一个月的最后一天,请添加一个月并减go 一天:

let comps2 = NSDateComponents()
comps2.month = 1
comps2.day = -1
let endOfMonth = calendar.dateByAddingComponents(comps2, toDate: startOfMonth, options: [])!
print(dateFormatter.stringFromDate(endOfMonth)) // 2015-11-30

或者,使用rangeOfUnit的方法,这会让你

var startOfMonth : NSDate?
var lengthOfMonth : NSTimeInterval = 0
calendar.rangeOfUnit(.Month, startDate: &startOfMonth, interval: &lengthOfMonth, forDate: date)

对于一个月的最后一天的日期,请将该月的长度减go 一秒:

let endOfMonth = startOfMonth!.dateByAddingTimeInterval(lengthOfMonth - 1)

针对SWIFT 5更新:

extension Date {
    var startOfDay: Date {
        return Calendar.current.startOfDay(for: self)
    }

    var startOfMonth: Date {

        let calendar = Calendar(identifier: .gregorian)
        let components = calendar.dateComponents([.year, .month], from: self)

        return  calendar.date(from: components)!
    }

    var endOfDay: Date {
        var components = DateComponents()
        components.day = 1
        components.second = -1
        return Calendar.current.date(byAdding: components, to: startOfDay)!
    }

    var endOfMonth: Date {
        var components = DateComponents()
        components.month = 1
        components.second = -1
        return Calendar(identifier: .gregorian).date(byAdding: components, to: startOfMonth)!
    }

    func isMonday() -> Bool {
        let calendar = Calendar(identifier: .gregorian)
        let components = calendar.dateComponents([.weekday], from: self)
        return components.weekday == 2
    }
}

Ios相关问答推荐

使用音频单元播放音频流,出现爆裂声

在Swift5中,将某些属性值从一个类复制到另一个类实例

如何从Windows PC在iPhone上安装Flutter 应用程序

Swift-如何通过Case Let访问模型变量

如何删除NavigationView中的默认透明标头?

如何在后台显示 Swift UI 中的通讯通知?

清除/删除 NavigationController 中的多个 ViewController

如何解码没有名称的 JSON 数组?

来自 c++ 的runtime_error未在 iOS 中捕获

Xcode 14 弃用了位码 - 但为什么呢?

通过 tuist/XcodeProj 以编程方式将文件添加到本机目标

按钮在 SwiftUI 中没有采用给定的高度和宽度

无法同时满足约束 - 没有适当的约束

如何判断 `NSManagedObject` 是否已被删除?

UIScrollview 获取touch 事件

用 PC 调试 ipad safari

如何在 iOS 中判断暗模式?

'无效更新:第 0 节中的无效行数

如何确定 WKWebView 的内容大小?

UITableView 中的圆形 UIImageView 没有性能影响?