Swift - 第三方日期处理库SwiftDate使用详解3(随机日期,派生、修改日期)
作者:hangge | 2018-11-28 08:10
六、生成随机日期
1,不指定范围
下面生成两个随机日期,一个不指定 Region,一个指定 Region。
//不指定Region let date1 = DateInRegion.randomDate() print("date1:", date1.date) //指定一个Region let rome = Region(calendar: Calendars.gregorian, zone: Zones.europeRome, locale: Locales.italian) let date2 = DateInRegion.randomDate(region: rome) print("date2:", date2.date)
2,指定范围
(1)最近 5 天内的一个随机时间,同样可以指定或者不指定 Region。
//不指定Region let date1 = DateInRegion.randomDate(withinDaysBeforeToday: 5) print("date1:", date1.date) //指定一个Region let rome = Region(calendar: Calendars.gregorian, zone: Zones.europeRome, locale: Locales.italian) let date2 = DateInRegion.randomDate(withinDaysBeforeToday: 5, region: rome) print("date2:", date2.date)
(2)获取两个指定日期之间的一个随机日期,同样可以指定或者不指定 Region。
//不指定Region let date1 = DateInRegion.randomDate(between: "2018-12-12 10:30:00".toDate()!, and:"2018-12-18 10:30:00".toDate()!) print("date1:", date1.date) //指定一个Region let rome = Region(calendar: Calendars.gregorian, zone: Zones.europeRome, locale: Locales.italian) let date2 = DateInRegion.randomDate(between: "2018-12-12 10:30:00".toDate()!, and:"2018-12-18 10:30:00".toDate()!, region: rome) print("date2:", date2.date)
(3)获取两个指定日期之间的多个随机日期,与上面相比多了个 count 参数,用于表示生成的数组里日期的个数。
//不指定Region(生成5个随机日期) let dates1 = DateInRegion.randomDates(count: 5, between: "2018-12-12 10:30:00".toDate()!, and: "2018-12-18 10:30:00".toDate()!) print("dates1:", dates1) //指定一个Region(生成5个随机日期) let rome = Region(calendar: Calendars.gregorian, zone: Zones.europeRome, locale: Locales.italian) let dates2 = DateInRegion.randomDates(count: 5, between: "2018-12-12 10:30:00".toDate()!, and: "2018-12-18 10:30:00".toDate()!, region: rome) print("dates2:", dates2)
七、派生、修改日期
1,从当前日期派生
使用 DateInRegion().dateAt() 方法根据当前时间生成特定时间。
print("当前时间:", Date()) print("") print("今天开始时间:", DateInRegion().dateAt(.startOfDay).date) print("今天结束时间:", DateInRegion().dateAt(.endOfDay).date) print("本周开始时间:", DateInRegion().dateAt(.startOfWeek).date) print("本周结束时间:", DateInRegion().dateAt(.endOfWeek).date) print("本月开始时间:", DateInRegion().dateAt(.startOfMonth).date) print("本月结束时间:", DateInRegion().dateAt(.endOfMonth).date) print("") print("昨天这个时间:", DateInRegion().dateAt(.yesterday).date) print("昨天开始时间:", DateInRegion().dateAt(.yesterdayAtStart).date) print("明天这个时间:", DateInRegion().dateAt(.tomorrow).date) print("明天开始时间:", DateInRegion().dateAt(.tomorrowAtStart).date) print("") print("上周开始时间:", DateInRegion().dateAt(.prevWeek).date) print("上月开始时间:", DateInRegion().dateAt(.prevMonth).date) print("去年开始时间:", DateInRegion().dateAt(.prevYear).date) print("下周开始时间:", DateInRegion().dateAt(.nextWeek).date) print("下月开始时间:", DateInRegion().dateAt(.nextMonth).date) print("明年开始时间:", DateInRegion().dateAt(.nextYear).date)
2,从指定日期派生
(1)通过 dateAtStartOf() 和 dateAtEndOf() 方法可以根据一个指定日期时间来分别获取相应的开始、结束时间:
(3)通过 dateTruncated() 方法可以将一个时间的部分清除。比如下面将时分秒部分清空(都置为 0)。
let date1 = "2018-12-14 08:30:00".toDate()! print("指定日期:", date1.date) print("指定日期当天的开始时间:", date1.dateAtStartOf(.day).date) print("指定日期当天的结束时间:", date1.dateAtEndOf(.day).date) print("指定日期当月的开始时间:", date1.dateAtStartOf(.month).date) print("指定日期当月的结束时间:", date1.dateAtEndOf(.month).date) print("指定日期当年的开始时间:", date1.dateAtStartOf(.year).date) print("指定日期当年的结束时间:", date1.dateAtEndOf(.year).date)
(2)通过 dateBySet() 方法可以重置(修改)一个时间的部分内容。比如下面将时分秒部分都设置为 10。
let date1 = "2018-12-12 08:30:00".toDate()! print("原日期时间:", date1.date) let date2 = date1.dateBySet(hour: 10, min: 10, secs: 10)! print("新日期时间:", date2.date)
(3)通过 dateTruncated() 方法可以将一个时间的部分清除。比如下面将时分秒部分清空(都置为 0)。
let date1 = "2018-12-12 08:30:00".toDate()! print("原日期时间:", date1.date) let date2 = date1.dateTruncated(at: [.hour,.second,.minute])! print("新日期时间:", date2.date)
全部评论(0)