小编典典

我写了Date扩展名以获取某个工作日的Date,这就是在Swift 5中使用它的简便性

Date.today() // Oct 15, 2019 at 9:21 AM

Date.today().next(.monday) // Oct 21, 2019 at 9:21 AM

Date.today().next(.sunday) // Oct 20, 2019 at 9:21 AM

Date.today().previous(.sunday) // Oct 13, 2019 at 9:21 AM

Date.today().previous(.monday) // Oct 14, 2019 at 9:21 AM

Date.today().previous(.thursday) // Oct 10, 2019 at 9:21 AM

Date.today().next(.thursday) // Oct 17, 2019 at 9:21 AM

Date.today().previous(.thursday,

considerToday: true) // Oct 10, 2019 at 9:21 AM

Date.today().next(.monday)

.next(.sunday)

.next(.thursday) // Oct 31, 2019 at 9:21 AM

这是日期扩展,

extension Date {

static func today() -> Date {

return Date()

}

func next(_ weekday: Weekday, considerToday: Bool = false) -> Date {

return get(.next,

weekday,

considerToday: considerToday)

}

func previous(_ weekday: Weekday, considerToday: Bool = false) -> Date {

return get(.previous,

weekday,

considerToday: considerToday)

}

func get(_ direction: SearchDirection,

_ weekDay: Weekday,

considerToday consider: Bool = false) -> Date {

let dayName = weekDay.rawValue

let weekdaysName = getWeekDaysInEnglish().map { $0.lowercased() }

assert(weekdaysName.contains(dayName), "weekday symbol should be in form \(weekdaysName)")

let searchWeekdayIndex = weekdaysName.firstIndex(of: dayName)! + 1

let calendar = Calendar(identifier: .gregorian)

if consider && calendar.component(.weekday, from: self) == searchWeekdayIndex {

return self

}

var nextDateComponent = calendar.dateComponents([.hour, .minute, .second], from: self)

nextDateComponent.weekday = searchWeekdayIndex

let date = calendar.nextDate(after: self,

matching: nextDateComponent,

matchingPolicy: .nextTime,

direction: direction.calendarSearchDirection)

return date!

}

}

// MARK: Helper methods

extension Date {

func getWeekDaysInEnglish() -> [String] {

var calendar = Calendar(identifier: .gregorian)

calendar.locale = Locale(identifier: "en_US_POSIX")

return calendar.weekdaySymbols

}

enum Weekday: String {

case monday, tuesday, wednesday, thursday, friday, saturday, sunday

}

enum SearchDirection {

case next

case previous

var calendarSearchDirection: Calendar.SearchDirection {

switch self {

case .next:

return .forward

case .previous:

return .backward

}

}

}

}

2020-07-07

calendar获取本周一的日期_如何快速获取本周的星期一日期相关推荐

  1. python过去日期_利用python获取当前日期前后N天或N月日期的方法示例

    前言 最近因为工作原因,发现一个Python的时间组件,很好用分享出来!(忘记作者名字了,在这里先感谢了),下面话不多说,来一起看看详细的介绍吧. 示例代码: # -*- coding: utf-8 ...

  2. python获取一个月之前日期_利用python获取当前日期前后N天或N月日期的方法示例...

    前言 最近因为工作原因,发现一个Python的时间组件,很好用分享出来!(忘记作者名字了,在这里先感谢了),下面话不多说,来一起看看详细的介绍吧. 示例代码: # -*- coding: utf-8 ...

  3. sql 获取数据库字段信息_使用DBATools获取SQL数据库详细信息

    sql 获取数据库字段信息 In the series of articles on DBATools, (see TOC at the bottom) we are exploring useful ...

  4. mysql 日期_「13」MySQL中与日期与时间相关的函数

    下面这张图片,是我们每个人拿起手机就应该看到的,这就是日期与时间! MySQL中如何通过各种函数来实现日期与时间的处理?这就是本文所要探索的问题! [1]获取当前日期的函数 [结论]返回值是以&quo ...

  5. js根据月数计算有效日期_你真的看懂产品生产日期了么

    产品的生产日期和保质期,是与我们消费者健康.安全息息相关的重要信息.可是不清楚什么是生产日期和保质期,傻傻算不清? GB 7718-2011<预包装食品标签通则>中指出,生产日期是食品成为 ...

  6. 手机怎样快速获取root权限,手机怎样快速获取root权限密码

    安卓智能手机如何获取一键ROOT权限? 安卓智能手机获取一键ROOT权限的方法如下: 准备材料:安卓智能手机 1.为了提高ROOT的成功率,选择使用腾讯应用宝作为操作平台,手机连接后打开USB调试选项 ...

  7. java获取明天的日期_使用java获取昨日的日期,今日的日期,明日的日期

    private String tomorrowDate;//明日日期 private String todayDate;//明日日期 private String yesterdayDate;//明日 ...

  8. calender获取本月最后一天的日期_怕忘记2020法考重点日期?这份法考日历为你护航,信息量巨大...

    @司法部@北京司法@法考之家@法考吧@厚大法考#法考##厚大##法律文书##司法考试# 怕忘记重点考试日期? 每个月不知道复习什么? 2020年法考日历大事记来了,所有重要日期和本月应该完成的复习内容 ...

  9. mysql一次性获取几十万数据_《快速念咒——MySQL自学入门指南》:第2章——从表中获取更多数据(前言)...

    (欢迎大家关注订阅号--"快速念咒") 下一节我们将会使用两张新表--happyorder和happydetail.创建两张表的代码如下-- 创建happyorder表: CREA ...

  10. 公众号jdk 获取手机号_怎样快速获取使用国庆节公众号文章的素材和模板

    国庆节又称十一.国庆节.国庆日.中国国庆节.国庆黄金周.自1950年起,每年的10月1日,为中华人民共和国宣告成立的日子,即国庆日.峥嵘岁月,71年风雨兼程.终将迎来历史曙光.我们也马上迎来了国庆节小 ...

最新文章

  1. 如何在 SQL 2008 安裝 Performance Dashboard Reports
  2. P1282 多米诺骨牌 (差值DP+背包)
  3. 位地址和字节地址换算_关于ip地址的详解,看完这篇就够了
  4. 【阿里云OSS】访问控制
  5. MySQL8.0连接url
  6. 十个最适合 Web 和 APP 开发的 NodeJS 框架 1
  7. 树莓派 鼠标延迟问题【Linux】
  8. docker利用Dockerfile来制作镜像
  9. android sqlcipher 加密,Android 数据库加密 SQLCipher使用方法
  10. numpy—np.tensordot
  11. 理解insert all/insert first的使用
  12. hadoop使用mapreduce统计词频_Hadoop自带WordCount进行词频统计(mapreduce)
  13. 离散数学杜忠复版答案_离散数学(第二版)课后习题答案详解(完整版)
  14. [转自他人]一款好用的软件安装管理器
  15. ASA使用ASDM管理
  16. 在开放环境的步态识别:一个基准(二)
  17. 子网掩码-掩码位-反掩码 对照表
  18. 农业大省吉林谋乡村全面振兴:农业强、农村美、农民富
  19. 如何安装ssl证书?
  20. 心态很容易受别人影响_很容易被别人说的话影响心情,应该怎么办?

热门文章

  1. 多宁生物冲刺港股:年营收8亿 红杉中国与药明生物是股东
  2. mysql从一个表更新数据到另一个表中_sql怎样把一个表的数据更新到另一个表
  3. vmware esxi 7.0界面提示权限被拒绝
  4. Android中关于字符串与颜色的转换问题
  5. 软件测试指标图表分析,(最新整理)JMeter测试数据和测试结果分析图表
  6. 深圳求职安全防范手册
  7. 物联网毕业设计选题推荐100例
  8. MySQL:load data local infile快速插入大批量数据
  9. 知识图谱:将知识元素组织为有意义的结构
  10. Python实现个性化推荐一