如何在swift中获得本周的开始和结束?

如何在swift中获得本周的开始和结束?,第1张

概述参见英文答案 > How do I find the beginning of the week from an NSDate?                                    4个 >             How to get Monday’s date of the current week in swift                               参见英文答案 > How do I find the beginning of the week from an NSDate?                                    4个
>             How to get Monday’s date of the current week in swift                                    7个
如何在swift中获得本周的开始和结束
这是我的代码

extension Date {    var startOfWeek: Date? {        let gregorian = Calendar(IDentifIEr: .gregorian)        guard let sunday = gregorian.date(from: gregorian.dateComponents([.yearForWeekOfYear,.weekOfYear],from: self)) else { return nil }        return gregorian.date(byAdding: .day,value: 1,to: sunday)    }    var endOfWeek: Date? {        let gregorian = Calendar(IDentifIEr: .gregorian)        guard let sunday = gregorian.date(from: gregorian.dateComponents([.yearForWeekOfYear,value: 7,to: sunday)    }}

我这样打电话

let startWeek = Date().startOfWeeklet enDWeek = Date().endOfWeekprint(startWeek!)print(enDWeek!)var dateFormat1 = DateFormatter()dateFormat1.dateFormat = "dd-MM-yy"let startWeek2 = dateFormat1.string(from: startWeek!)var dateFormat12 = DateFormatter()dateFormat12.dateFormat = "dd-MM-yy"let enDWeek2 = dateFormat12.string(from: enDWeek!)print(startWeek2)print(enDWeek2)

和输出

2017-09-24 18:30:00 +00002017-09-30 18:30:00 +000025-09-1701-10-17
解决方法 你的代码工作得非常好.如果要在Playground中运行代码,则可以看到实际的Date对象而不是String表示.即使您没有指定DateFormatter,在执行print(Date())时,Swift使用DateFormatter来打印Date对象,因此该值将是相对时间而不是由提供的绝对时间点.日期对象.

在游乐场中,您可以看到实际的startOfWeek是“2017年9月25日上午12:00”,而endOfWeek是“2017年10月1日上午12:00”,这是本周的正确值.

不要使用print(Date())来检查Date对象的正确性,因为正如您所看到的,由于使用了基础DateFormatters,它将产生意外结果.

总结

以上是内存溢出为你收集整理的如何在swift中获得本周的开始和结束?全部内容,希望文章能够帮你解决如何在swift中获得本周的开始和结束?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1006336.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存