返回 导航

Swift

hangge.com

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() 方法可以根据一个指定日期时间来分别获取相应的开始、结束时间:
 
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)

回到顶部