概况

使用 SwiftDate,您可以非常方便的操控时间的组件。无论是否设置地区属性,DateInRegionDate都实现了同一套属性和方法来进行时间日期的管理。

请注意:使用简单时间 Date实例时,实际上是基于了设备默认的地区来初始化了 .defaultRegionRegion.GMT()是由设备默认的localeCalendar和当前设备所在地的时区所决定,.defaultRegion 的初始值就是Region.GMT()

如果想要修改的默认的区域,调用Date的静态方法 .setDefaultRegion() 即可!

补充说明:

时间的这些属性值需考虑上下文的地区与日历系统;如果调用者是DateInRegion,SwiftDate 将会使用已经指定的.region来计算具体属性值,如果调用者是普通Date,SwiftDate 将会基于默认的Date.defaultRegion来计算属性值。以下所有属性与组件都服从此原则。

era

返回公元状态,我们日常生活中的 2016 年都以公元年为起点,这些时间的 era 都为 1 , 而公元前的年份如 -2000 年,这些时间的 era 都是 0。所以在操作近代时间时,无需考虑此属性。 声明:

  1. public var era: Int

year

返回年份的数值 声明:

  1. public var year: Int

month

返回月份的数值,如 5声明:

  1. public var month: Int

day

返回年月日中 的数值,如 30声明:

  1. public var day: Int

hour

返回时分秒中 的数值 声明:

  1. public var hour: Int

nearestHour

根据四舍五入的方法取出时间的最近小时。简单举例:比如 8:15 会返回 8 ,而 8:50 会返回 9 声明:

  1. public var nearestHour: Int

minute

返回时分秒中 的数值 声明:

  1. public var minute: Int

second

返回时分秒中 的数值 声明:

  1. public var second: Int

nanosecond

返回时间的 毫秒的数值 声明:

  1. public var nanosecond: Int

注意 公历日历定义一个星期有7天,一年有356天,或闰年366天。 然而,356或366都不平均地分成7天的周,因此通常情况下,一年的最后一周在下一年的一天结束,一年的第一周从前一年开始。 为了协调这一点,ISO 8601定义了一个周编号年份,包括52或53整周(364或371天),以便一年的第一周被指定为包含一年中第一个星期四的星期。

您可以将yearForWeekOfYear属性与weekOfYear和weekday属性配合使用,以获取与一年中给定星期的特定工作日对应的日期。 例如,2005年第53周(ISO 2005-W53-6)的第6天对应于公历日历上2005年1月1日星期六。比如罗马时间 2015-12-31 15:10:12 他的 yearForWeekOfYear2016weekOfYear1weekday3

yearForWeekOfYear

ISO8601 的周数计算规则下,日期所属的年份。可能是当前日期的前一年,或者下一年,或者当年。 声明:

  1. public var yearForWeekOfYear: Int

weekOfYear

在 ISO 8601 的周数计算规则下,日期所属的周数。如罗马时间 2015-11-31 是第 49 周,2015-12-31 是第一周。 声明:

  1. public var weekOfYear: Int

weekday

在 ISO 8601 的周数计算规则下,在时间所属的周中, 是星期几,且规定了 1是星期日,也就是每周的起点是周日。如罗马时间 2015-11-31 是星期四 ,其 weekday5

声明:

  1. public var weekday: Int

weekdayOrdinal

以每个月的第一天为当月第一周的起点,无视全年的星期计算规则,比如每个月第 4 天就是第一周,第 8 天就是第二周。

声明:

  1. public var weekdayOrdinal: Int

weekdayName

某个日期的星期名称,如果你设定是中国地区,那周二为“星期二”,日本地区就是 “火曜日” ,美国地区就是 “Tuesday”,注意此值取决于地区属性。

声明:

  1. public var weekdayName: String

monthDays

时间所在月份,该月份的天数,比如公历中, 二月 可能有 29 天或 28 天,12 月有 31天。 声明:

  1. public var monthDays: Int

quarter

返回季度单位的数值。注意在常识中,一年分为春夏秋冬四季,但在不同地区季度的起始时间不同,因此此属性在没有赋值的情况下均为 0 ,当您需要使用前,请赋值。 声明:

  1. public var quarter: Int

weekOfMonth

返回月份所包含的周数,此处按照 IOS 8601 的标准,每个月横跨的周数,比如 2015年2月 的 weekOfMonth 是 4 ,而 2016 年 2 月的 weekOfMonth 是 5 。 声明:

  1. public var weekOfMonth: Int

shortMonthName

该时间所在月份的简称,比如美国地区 2月全称是 February ,简称是 Feb 即 2015-02-01 改时间的 shortMonthName 就是 Feb声明:

  1. public var monthName: Int

leapMonth

返回一个布尔值,说明某个月份是否是闰月。 true,表示该时间所在月份是闰月,否则不是闰月。 声明:

  1. public var leapMonth: Bool

leapYear

返回一个布尔值,说明某个年份是否是闰年。 true,表示该时间所在的年份是闰年,否则不是闰年。 声明:

  1. public var leapYear: Bool

补充说明: 这个值将会在其使用的日历和时区的环境中解释;如果调用者是DateInRegion,系统环境将会使用相关的.region来定义,如果调用者是普通Date,系统环境将会使用默认值Date.defaultRegion来定义。

julianDay

儒略日 (Julian Day) 是天文学家使用从朱利安时期以来连续的天数。详情请见维基百科词条 儒略日 声明:

  1. public var julianDay: Double

modifiedJulianDay

儒略日 (Julian Day) 有一些列的计算方法,由于用途是天文领域,且与公历换算复杂,此处不展开叙述,详情请见维基百科词条 Julian Day

声明:

  1. public var modifiedJulianDay: Double

previousWeekend

返回该时间所在周的上个周末,这个周末以元组表示,第一个元素是上周末开始的时间,第二个是上周末的结束时间。且这两个时间都是 DateInRegion 实例。 注意:是上个周的周末,不是时间本来所在周的周末

声明:

  1. public var previousWeekend: (startDate: DateInRegion, endDate: DateInRegion)?

thisWeekend

返回该时间所在周的周末,这个周末以元组表示,第一个元素是本周末开始的时间,第二个是本周末的结束时间。且这两个时间都是 DateInRegion 实例。

声明:

  1. public var thisWeekend: (startDate: DateInRegion, endDate: DateInRegion)?

nextWeekend

返回该时间所在周的下个周末,这个周末以元组表示,第一个元素是下周末开始的时间,第二个是下周末的结束时间。且这两个时间都是 DateInRegion 实例。 注意:是下个周的周末,不是时间本来所在周的周末 声明:

  1. public var nextWeekend: (startDate: DateInRegion, endDate: DateInRegion)?

isToday

返回布尔值,返回调用此属性的时间实例是否在今天。 声明:

  1. public var isToday: Bool

isYesterday

返回布尔值,返回调用此属性的时间实例是否在昨天。 声明:

  1. public var isYesterday: Bool

isTomorrow

返回布尔值,返回调用此属性的时间实例是否在明天。 声明:

  1. public var isTomorrow: Bool

isInWeekend

返回布尔值,返回调用此属性的时间实例是否在其所在周的周末时间段内。 声明:

  1. public var isInWeekend: Bool

isInPast

比较该时间实例与当前时间,换算成时间绝对值来,比较大小,如果比当前时间小,即为过去时间,返回 true;反之,返回 false。简言之:早于现在时刻的时间 返回 true声明:

  1. public var isInPast: Bool

isInFuture

比较该时间实例与当前时间,换算成时间绝对值来,比较大小,如果比当前时间大,即为将来时间,返回 true;反之,返回 false。简言之:晚于现在时刻的时间 返回 true

声明:

  1. public var isInFuture: Bool

isInSameDayOf()

比较时间实例与给定的时间是否为在同一天。比较时采用调用者的时区和日历设置。 声明:

  1. public func isInSameDayOf(date: DateInRegion) -> Bool
  2. public func isInSameDayOf(date: Date) -> Bool

startOfDay

返回当前时间所在 的起始时刻,比如 2016-11-11 23:10:00 的 startOfDay 是 2016-11-11 00:00:00 。注意会结合时区和日历。 声明:

  1. public var startOfDay: DateInRegion
  2. public var startOfDay: Date

endOfDay

返回当前时间所在 的结束时刻,比如 2016-11-11 23:10:00 的 startOfDay 是 2016-11-11 23:59:59 。注意会结合时区和日历。 声明:

  1. public var endOfDay: DateInRegion
  2. public var endOfDay: Date

nextMonth

时间所在月份的下一个月的同一日的起始时间,比如 2016-03-31 13:30:00 的 nextMonth 是 2016-04-30 00:00:00,注意 SwiftDate 会自动换算不同月份天数不同的问题。 声明:

  1. public var nextMonth: DateInRegion
  2. public var nextMonth: Date

prevMonth

时间所在月份的上一个月的同一日的起始时间,比如 2016-03-31 13:30:00 的 nextMonth 是 2016-02-29 00:00:00,注意 SwiftDate 会自动换算不同月份天数不同的问题。 声明:

  1. public var prevMonth: DateInRegion
  2. public var prevMonth: Date

startOf()

给定一个单位,返回时间在此单位的起始值,比如给定以年为单位, 2016-11-11 11:11:11 的 startOf() 是 2016-01-01 00:00:00 ;给定 时 为单位,会反回 2016-11-11 11:00:00 声明:

  1. public func startOf(component: Calendar.Component) -> DateInRegion
  2. public func startOf(component: Calendar.Component) -> Date