新普金娱乐网址


《增加黑客》笔记(五):进步留存

手提式有线电话机也能拍到200mm焦距的雄强夜景?!

天文斯威夫特Date 国语文书档案

  • 三月 25, 2019
  • 天文
  • 没有评论

(难)

Date 和 Absolute Time

Date是日期和岁月处理的基础类。在iOS内部,时间以从 二零零四年11月7日00:00
UTC 的秒数,作为相对值存款和储蓄,Date对此实行打包,并提供有关办法。

世界内地的在同一个时时,你可以认为是同二个实体(除非出现了八个新的星球时间种类)。可是附加上外地不相同的表明和总括办法,时间就变得略微复杂。

纯属时间一种通俗的概念:在U.S.的 A 正在跟在香港的 B
实行通话,这些随时就足以称之为相对时间;在平等时刻都会有那样的通话,但是出于时区、不用的日历以及不相同的字母或标志方法,区域时间就恐怕分化。

基本功库还协助处理分化的日历连串的 Calendar 日历实例;

在处理跨时区、日历项目和区域的光阴更换的时候,都会赶上有的吃力的标题。斯维夫特Date能够帮您更连忙的缓解这一个难点。

在山脚的小店,店COO是个三十多岁的女生,告诉她:“蛇胆能够除热,只是相当苦。”

概览


应用 斯维夫特Date
来对时间开始展览有关修改操作特别轻便;修改时间组件,相比八个时间(时间的例外以她们之间的例外组件来表示)。无论是带有地区属性的
DateInRegion 时间实例照旧单一结构的 Date
时间实例,都得以举办这几个操作。

(难)

endOfDay

回去当前时刻所在 的终止时刻,比如 二〇一五-11-11 23:10:00 的
startOfDay 是 二〇一六-11-11 23:59:59 。注意会构成时区和日历。
声明:

public var endOfDay: DateInRegion
public var endOfDay: Date

(4)季胜为啥在信中说“我当见你”

是否晚于某时间(给定单位)

概述
在给定单位粒度前提下,相比现有时间是还是不是晚于给定时间。

声明
func isAfter(date: DateInRegion, orEqual: Bool = false, granularity: Calendar.Component) -> Bool
func compare(to date: Date, granularity: Calendar.Component) -> ComparisonResult
func isAfter(date: Date, orEqual: Bool = false, granularity: Calendar.Component) -> Bool

参数

  • date: date to compare
  • orEqual: true to also check for equality
  • granularity: The smallest unit that must, along with all larger
    units, be less for the given dates.

(中)

isToday

归来布尔值,重临调用此属性的日子实例是或不是在前天。
声明:

public var isToday: Bool

(14)那是个从未李鱼的地方——到底是什么样所在

相比时间


概述
在 Swift3 的 Foundation 库中,已经支撑相比较 Date 时间实例。
斯维夫特Date 为含有地区属性的 DateInRegion
补充了貌似的比较艺术,并通过添加新措施扩张了现有 Foundation
库对两样粒度下的岁月相比。

比较简单时间
您能够动用 >,>=,<,=< 运算符来相比时间,例如:

// 03 gen 2015, 15:10:00 CET
let date1 = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)
let date2 = try! DateInRegion(components: [.year: 2015, .month: 2, .day: 5, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)

if date2 > date1 { // DateInRegion supports Equatable protocol you can use >=, <=, < or >
    print("'\(date2)' date is later than '\(date1)'")
}

if date2 == date1 {
  // simple equality
}

梦里有个饮酒的地点,那里有人纵歌,有人跳舞。他在吃酒,旁边有个妇女,她告诉她,你是个男生,适合和您讲2个关于心房的遗闻——男生的心能够是多多益善的个屋子,每一个屋子端坐着2个女士:女子的心啊,是一个屋子,只容的下一人,人去了,还要把门锁好久,直到确信那个家伙再不回去,才把门儿开开。开开关关,好多年过去,就不会再有人来。

对时间的每四日进行改动

概述
本着现有的时光实例, .atTime(hour:minute:second)
方法能够修改时刻,提供
的值,得到2个新的小时,新的实例中国和东瀛期与日期不变。
异常
即便原时间无法生成新时间,会抛出 .FailedToCalculate 异常。

声明
func atTime(hour: Int, minute: Int, second: Int) throws -> DateInRegion
func atTime(hour: Int, minute: Int, second: Int) throws -> Date

参数

  • hour: hour(s) to set
  • minute: minute(s) to set
  • second: second(s) to set

回到结果
在原时间基础上,依照你提供的转移一个新时间实例,地区安装保险不变。别的,其余的时刻组件在要求时
SwiftDate 会加以修改,以保全合理。

例子

// 生成一个新的罗马时间,日历格式选择公历,时间表述格式以意大利为准。
// 03 gen 2015, 15:10:00 CET
let regionRome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italianItaly)
let date = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)

// 应用 `.atTime()` 方法
let newDateAtGivenTime = try! date.atTime(hour: 09, minute: 10, second: 22) // 03 gen 2015, 09:10:22 CET

(2)陈东来看了如何不应该看到的事物?

julianDay

儒略日 (Julian Day)
是天史学家使用从Julian时代以来连年的气数。详情请见维基百科词条
儒略日
声明:

public var julianDay: Double

自笔者回忆上山的时候从不这家酒馆。

数学生运动算


为时间累加组件
你能够运用 Swift 中常用数学生运动算符,来增减时间成分的值。如+-

依照你所表达的上下文,斯威夫特Date 会自动判断并生成带有地区属性的
DateInRegion 时间实例或纯粹结构的 Date 时间实例。
可用的小时组件有:
nanoseconds,seconds,minutes,hours,days,weeks,years
上面是有的数学生运动算的例证:

// 创建一个罗马时间 2015-01-03 @ 15:10:00
let regionRome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italianItaly)
var date = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)

// 让我试试数学运算符修改时间元素值
date = date + 3.seconds + 15.minutes // -> 03 gen 2015, 15:25:03 CET
date = date - 120.seconds // minus 2 minutes -> 03 gen 2015, 15:23:03 CET
date = date + 3.weeks // 24 gen 2015, 15:23:03 CET
// 你也可以直接增加绝对秒数,SwiftDate 会自动帮你换算
date.add(interval: 10) // 24 gen 2015, 15:23:03 CET

陈东问——

收获三个时刻中的最靠前(时间线上最靠右的)的时光

概述
在加以的三个日子实例集合中,重回当中最新的小时实例。比较依照相对时间值,时间实例的地点,时区,表述格式等零件不会对相比较结实爆发震慑。

声明
(DateInRegion) static func latestDate(_ list: [DateInRegion]) -> DateInRegion
(Date) static func latestDate(_ list: [DateInRegion]) -> Date

例子

// date1 = 2015-01-03 15:10:00
let date1 = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)
// date2 = 2014-12-30 20:10:00
let date2 = try! DateInRegion(components: [.year: 2014, .month: 12, .day: 30, .hour: 20, .minute: 10, .second: 0], fromRegion: regionRome)
// date3 = 2015-01-03 15:20:00
let date3 = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 20, .second: 0], fromRegion: regionRome)

// get the latest date in a set
let latestDate = DateInRegion.latestDate([date1,date2,date3]) // is date1 (2015-01-03 14:20:00 +0000)
// or directly via Array extension
let latestDate = [date1,date2,date3].latestDate

和本身的女婿在那间店里。

修改时间

第六天

剖析与创建时间

第三天

Fork us on GitHub

斯维夫特Date是开源的类库,源码托管在GitHub上。

上面的架势能够为斯维夫特Date作进献:

  • 抓到3个bug,提供详细步骤复现bug,open一个issue。
  • 提议二个成效性的呼吁,open一个issue。
  • 贡献代码,提交pr。

(难)

条件供给

眼下官方的版本是v4,一些供给:

  • Swift 3.0+
  • iOS 8 or later
  • macOS 10.10 or later
  • watchOS 2.0 or later
  • tvOS 9.0 or later
  • …任意设置斯威夫特3以及斯威夫特的基本库的平台

(中)

老版本

要是你选择的是swift2.2要么swift2.3,你能够到GitHub
page

科伦坡的烈火烧个不停,不知有微微人家妻离子散。陈东站在栏杆上,李鱼宽慰他,说:“物理无穷,人寿有尽。老公不必太过伤感。”陈东摇了摇头,作者在想着贰个梦。

Carthage安装情势

Carthage是一种非集成的依赖性管理器,创设注重,并提供二元框架。

homebrew安装Carthage

$ brew update
$ brew install carthage

在Xcode项目中央银行使Carthage引入斯威夫特Date,只供给在Cartfile中新增:

github "malcommac/SwiftDate" ~> 4.0

清晨,李鱼提着八宝盒回来,说,山下开了一间小店,店首席执行官好像是个女的,叫明明。那里的事物真难吃。又说,圣旨下来了,天皇要有司开仓放赈。

数学运算


为时间累加组件
您能够运用 斯威夫特 中常用数学生运动算符,来增减时间成分的值。如+-

据他们说你所表明的上下文,SwiftDate 会自动判断并扭转带有地区属性的
DateInRegion 时间实例或纯粹结构的 Date 时间实例。
可用的时辰组件有:
nanoseconds,seconds,minutes,hours,days,weeks,years
上面是部分数学生运动算的事例:

// 创建一个罗马时间 2015-01-03 @ 15:10:00
let regionRome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italianItaly)
var date = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)

// 让我试试数学运算符修改时间元素值
date = date + 3.seconds + 15.minutes // -> 03 gen 2015, 15:25:03 CET
date = date - 120.seconds // minus 2 minutes -> 03 gen 2015, 15:23:03 CET
date = date + 3.weeks // 24 gen 2015, 15:23:03 CET
// 你也可以直接增加绝对秒数,SwiftDate 会自动帮你换算
date.add(interval: 10) // 24 gen 2015, 15:23:03 CET

晚上,那位妇女侍奉陈东睡下,半夜清醒的时候,那位女士光着身子躺在他的身边。那位妇女告诉她,你喝醉了。

isYesterday

回去布尔值,重临调用此属性的时日实例是或不是在前些天。
声明:

public var isYesterday: Bool

其人诗语真素,高情独诣。后从道者游于渭水,散发不归。

isInPast

相比较该时间实例与当下光阴,换算成时间相对值来,相比较大小,假若比如今时光小,即为过去岁月,重返
true;反之,返回 false。简言之:早于今后时时的年华 重回 true
声明:

public var isInPast: Bool

李鱼等着陈东吃完,收拾桌面的时候,轻声的说:“所以啊,你会师到不应当看到的东西。”

modifiedJulianDay

儒略日 (Julian Day)
有部分列的乘除格局,由于用途是天文领域,且与农历换算复杂,此处不进行叙述,详情请见维基百科词条
Julian
Day

声明:

public var modifiedJulianDay: Double

看完喜欢的同桌,随手加个关爱。

岁月所对应的单位停止值

概述
利用 .startOf() 方法,传入单位后,你能够获取现有时间对应的结束址。

声明
endOf(component: Calendar.Component) -> DateInRegion
endOf(component: Calendar.Component) -> Date

参数

  • component: component to alter

归来结果
回去给定时间单位距离的结束址所对应的 DateInRegion/Date 时间实例。

// Create a Region in Rome TimeZone with Gregorian Calendar and Italy locale settings
let regionRome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italianItaly)

// 03 gen 2015, 15:10:00 CET
let date = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)

let startOfHour = date.endOf(component: .hour) // 03 gen 2015, 15:59:59 CET
let startOfMonth = date.endOf(component: .month) // 31 gen 2015, 23:59:59 CET
let startOfWeek = date.endOf(component: .weekOfMonth) // 03 gen 2015, 23:59:59 CET

(超级难)

leapYear

回来1个布尔值,表达有个别年份是不是是闰年。
true,表示该时间各州的年度是闰年,不然不是闰年。
声明:

public var leapYear: Bool

补偿表明:
那么些值将会在其行使的日历和时区的条件中表达;要是调用者是DateInRegion,系统环境将会利用相关的.region来定义,如若调用者是普普通通Date,系统环境将会利用暗中同意值Date.defaultRegion来定义。

(3)五星连珠意味着什么?

根本概念

流水一如往昔坦然,只是,一千年之后再也不会有人见过如此安然的水面。陈东忘记了一件工作,季胜的信中还说到,他看到一个西楚的宫女,楚霸王火烧阿旁宫的时候,她被放了出去的,她一天到晚不动,以松果为食,浑身长满孔雀绿的头发。

quarter

再次来到季度单位的数值。注意在常识中,一年分为春夏秋冬四季,但在不相同地域季度的序幕时间各异,由此此属性在未曾赋值的情状下均为
0 ,当您供给动用前,请赋值。

声明:

public var quarter: Int

李鱼勉强笑了一笑,一手轻轻的拭去陈东额头上的汗水,一手移烛相照,说:“你还记得啊,孩他爹,你又做梦了。”

那或者是不太重庆大学的标注说明:

GMT(Greenwich Mean Time):指格林威治标准时间;

PST(Pacific Standard Time):指太平洋规范时间;

  • TimeZone:
    用来定义时区。时区在自然水准上代表了差别地区,由此,地区的名字的可看做时区的称号,例如塔希提岛时区,香岛时间。类似的,格林尼治时间(GMT)或U.S.西头时间(PST)的偏移量,
    也能够用来表示时区,例如东八区(维生霉素T +8)

  • Calendar:
    用来表示日历类别,日历系列定义了年与月的尺寸与分割。SwiftDate
    提供了区别日历的音讯,还帮忙差别日历下时间的计量,例如给出相对时间值,SwiftDate
    能够显明他在钦赐日历系统下的日期。

  • local:
    用来表示当地的年月公布方式。由于外地的学问、语言、规范的例外,时间在大街小巷用分裂的相间符或语法来代表。比如
    中中原人民共和国地区相似接纳 年-月-日 时:分:表,而U.S.地区多利用 月-日-年
    时:分:秒

另五个是DateInRegion,是在一定的国度地区 Region
下,描述二个自笔者与具体时区和日历非亲非故的时刻Date。这是出于特定的国度地区一般选拔固定的时区、日历系统与发挥规范,只要评释了江山位置,就富含了以上八个成分。实际行使中,使用DateInRegion能够方便的操作上下文中的日期。

SwiftDate
为你提供相同的函数和属性,以管理带有地区属性的DateInRegion光阴实例 和
单纯Date岁月实例。

                                    ——题记

second

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

public var second: Int

(12)李鱼为啥卖身葬母

时光所对应的单位初步值


概述
利用 .startOf()
方法,传入总计单位后,你可以拿走改时间到今后的差值。补充表达:时间是叁个点值,而时间的单位都以一段时间的差值,那里的初步值指的便是光阴点值在时光单位的区间中的左侧界值;比如,二零一五-11-11
20:39:50 ,以月为单位,早先值是 2016-11-01 00:00:00;以小时为单位
,开头值是 二零一六-11-11 20:00:00。
声明
startOf(component: Calendar.Component) -> DateInRegion
startOf(component: Calendar.Component) -> Date

参数

  • component: component to alter

返回值
再次来到给定时间单位距离的起头值所对应的 DateInRegion/Date 时间实例。

例子

// Create a Region in Rome TimeZone with Gregorian Calendar and Italy locale settings
let regionRome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italianItaly)

// 03 gen 2015, 15:10:00 CET
let date = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)

let startOfHour = date.startOf(component: .hour) // 03 gen 2015, 15:00:00 CET
let startOfMonth = date.startOf(component: .month) // 01 gen 2015, 00:00:00 CET
let startOfWeek = date.startOf(component: .weekOfMonth) // 28 dic 2014, 00:00:00 CET

不过,陈东的想起告诉要好,2018年,安国寺的门口,李鱼头缠白醭,坐于道旁草席之上,身边多个大字,“卖身葬母。”

批量改动时间组件的值


概述
给定一个 [时间组件 : 值] 的字典,SwiftDate
会依据时间组件的单位扩充排序,并修改对应组件的值。
在 斯维夫特Date 中,规定时间组件的扩展排序为:
.nanosecond,.second,.minute,.hour,.day,.month,.year,.yearForWeekOfYear,.weekOfYear,.weekday,.quarter,.weekdayOrdinal,.weekOfMonth.

声明
func at(unitsWithValues dict: [Calendar.Component : Int]) throws -> DateInRegion
func at(unitsWithValues dict: [Calendar.Component : Int]) throws -> Date

参数

  • unitsWithValues: calendar component units to alter

异常
对有些时刻组件赋值爆发错误时,会抛出 .FailedToCalculate 异常。

再次来到结果
对点名组件赋值后,生成一个新的小运实例,比给定时间组件更大的机件将不会被改动,更小的假诺没有赋值将一切赋最小值;那有的的规律,在上七个方法中有补充表明。

例子

// Create a Region in Rome TimeZone with Gregorian Calendar and Italy locale settings
// 03 gen 2015, 15:10:00 CET
let regionRome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italianItaly)

let date = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)
let time = try! date.at(unitsWithValues: [.year: 2016, .month: 7]) // 01 gen 2016, 00:00:00 CET

大火烧了七日。

对时间的钦命组件实行修改

概述
对点名的年月组件的值实行修改,在担保其余零件值合理的意况下,重回三个新的时间实例。

声明
func at(unit: Calendar.Component, value: Int) throws -> DateInRegion
func at(unit: Calendar.Component, value: Int) throws -> Date

参数

  • unit: calendar component unit to alter

异常
设若给定的零件赋值不成事,不可能生成新时间实例时,会抛出
.FailedToCalculate 异常。

再次来到结果
在原时间基础上,修改给定组件的值,然后生成新的时间实例并回到。斯维夫特Date
在客观的前提下不会改变与给定组件比较单位更大组件的值。补充表达:就算改动了时间中
的值,那全体的等更小的零件的值都会被赋最小值 ,而

等更大单位的组件的值会保持原样,那样做是为了保险合理,03-31,假若对月改成
2 ,那2-31 很分明不创制。比如 二〇一五-11-11 11:11:11 修改了 12
这,再次来到的新的小时是 贰零壹肆-12-01 00:00:00

例子

// 生成一个新的罗马时间,日历格式选择公历,时间表述格式以意大利为准。
// 03 gen 2015, 15:10:00 CET
let regionRome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italianItaly)
let date = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)

let atGivenYear = try! date.at(unit: .year, value: 2020) // 01 gen 2020, 00:00:00 CET. day is altered

第五天

收获多少个时刻中的最靠前(时间线上最靠右的)的日子

概述
在加以的多少个日子实例集合中,再次来到在那之中最新的年月实例。相比根据相对时间值,时间实例的地域,时区,表述格式等零件不会对相比较结实产生震慑。

声明
(DateInRegion) static func latestDate(_ list: [DateInRegion]) -> DateInRegion
(Date) static func latestDate(_ list: [DateInRegion]) -> Date

例子

// date1 = 2015-01-03 15:10:00
let date1 = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)
// date2 = 2014-12-30 20:10:00
let date2 = try! DateInRegion(components: [.year: 2014, .month: 12, .day: 30, .hour: 20, .minute: 10, .second: 0], fromRegion: regionRome)
// date3 = 2015-01-03 15:20:00
let date3 = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 20, .second: 0], fromRegion: regionRome)

// get the latest date in a set
let latestDate = DateInRegion.latestDate([date1,date2,date3]) // is date1 (2015-01-03 14:20:00 +0000)
// or directly via Array extension
let latestDate = [date1,date2,date3].latestDate

您走的是另一条路

previousWeekend

再次来到该时间所在周的上个周末,那几个周末以元组表示,第多少个要素是下一日末开首的岁月,第三个是前一周末的终结时间。且那多个时间都以
DateInRegion 实例。
只顾:是上个周的周六,不是时间自然所在周的周末

声明:

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

(9)季胜修炼内丹是道家之术,为啥最后还要追随道者

斯维夫特Dare 中文版表达文书档案 – 修改时间 – 5

@(宫丁园学习笔记)[swift, 翻译]

(易)

isInSameDayOf()

正如时间实例与给定的时光是不是为在当天。相比时利用调用者的时区和日历设置。
声明:

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

于是窗外五星高悬,瓜亚基尔大火,明照天南。

monthDays

光阴所在月份,该月份的造化,比如农历中, 六月 恐怕有 29 天或 28 天,七月有 31天。
声明:

public var monthDays: Int

第七天

依据时间组件创建时间


传扬一组 Calendar.Component
与对应值组成的数组(由[Calendar.Component:Int]
样式的字典和求实的地面所定义)来成立二个新的 DateInRegion 时间实例
声明
func init(components: [Calendar.Component:Int], in region: Region)

参数

  • components: components used to generate the new date. It’s a
    dictionary where keys are Calendar.Component and values are Int
    with relative value. Supported components are:
    .day,.era,.hour,.minute,.month,.nanosecond,.quarter,.second,.weekOfMonth,.weekOfYear,.weekday,.weekdayOrdinal,.year,
    .yearForWeekOfYear
  • region: is the region in which you want to express specified date.
    If nil or not specified Region.Local(( is used instead.

归来结果
回来二个 DateInRegion 时间实例,其组件由传入的 DateComponets
来决定;

例子

let c: [Calendar.Component : Int] = [.year: 2002, .month: 3, .hour: 5, .day: 4, .minute: 6, .second: 7, .nanosecond: 87654321]
// create a new DateInRegion on 2002-03-04 at 05:06:07.87654321 (+/-10) in Region.Local()
let date = try! DateInRegion(components: c, fromRegion: nil)

陈东把握李鱼的手,你怎么没有告诉本身,你有一个人阿妈。

收获几个时刻中最久远(时间线上最靠左的)的小时

概述
在加以的多少个刻钟实例集合中,再次回到在那之中最遥远的光阴。相比较根据绝对时间值,时间实例的地段,时区,表述格式等零件不会对比较结实产生震慑。

声明
(DateInRegion) static func earliestDate(_ list: [DateInRegion]) -> DateInRegion
(Date) static func earliestDate(_ list: [DateInRegion]) -> Date

例子

// date1 = 2015-01-03 15:10:00
let date1 = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)
// date2 = 2014-12-30 20:10:00
let date2 = try! DateInRegion(components: [.year: 2014, .month: 12, .day: 30, .hour: 20, .minute: 10, .second: 0], fromRegion: regionRome)
// date3 = 2015-01-03 15:20:00
let date3 = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 20, .second: 0], fromRegion: regionRome)

// get the latest date in a set
let earliestDate = DateInRegion.earliestDate([date1,date2,date3]) // is date2 30 dic 2014, 20:10:00 CET
// or directly via Array extension
let earliestDate = [date1,date2,date3].earliestDate

(易)

isInFuture

相比该时间实例与当下时刻,换算成时间相对值来,比较大小,假设比最近几日子大,即为以往光阴,再次来到
true;反之,返回 false。简言之:晚于今后时刻的年华 重临 true

声明:

public var isInFuture: Bool

李鱼把盘子高高的举在眉间,说:“孩子他妈,你吃了不应该吃的事物。”

minute

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

public var minute: Int

她说:“你怎么样时候认识李鱼的?”又说:“真是个红颜。”还说:“那样的女生,哪怕做错什么都是足以包容的。”

Podfile文件

在Xcode项目中引入SwiftDate,编辑Podfile新增:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'

target 'TargetName' do
pod 'SwiftDate', '~> 4.0'
end

(15)明明说“你走的是另一条路”,那是一条如何路

对时间的钦命组件进行修改

概述
对点名的岁月组件的值实行改动,在确认保障别的零件值合理的情景下,重回二个新的时刻实例。

声明
func at(unit: Calendar.Component, value: Int) throws -> DateInRegion
func at(unit: Calendar.Component, value: Int) throws -> Date

参数

  • unit: calendar component unit to alter

异常
若是给定的机件赋值不成功,无法生成新时间实例时,会抛出
.FailedToCalculate 异常。

重返结果
在原时间基础上,修改给定组件的值,然后生成新的时间实例并赶回。斯威夫特Date
在合理的前提下不会转移与给定组件相比单位更大组件的值。补充表达:假如改动了岁月首
的值,那拥有的等更小的零件的值都会被赋最小值 ,而

等更大单位的组件的值会保持原样,那样做是为了保证合理,03-31,若是对月改成
2 ,那2-31 很显明不成立。比如 二零一六-11-11 11:11:11 修改了 12
那,再次来到的新的时日是 二〇一六-12-01 00:00:00

例子

// 生成一个新的罗马时间,日历格式选择公历,时间表述格式以意大利为准。
// 03 gen 2015, 15:10:00 CET
let regionRome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italianItaly)
let date = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)

let atGivenYear = try! date.at(unit: .year, value: 2020) // 01 gen 2020, 00:00:00 CET. day is altered

——————————————————

收获当前每日的时光实例


使用私下认可的 init() 方法可高效的始建基于设施当前地域和天天的
DateInRegion 时间实例。

声明
func init()

重临结果
返回的 DateInRegion
对象定义了现阶段时时(Date())和设施当前的三街六巷地段,此地区属性(Region.Local())包罗了时区
.timeZone、区域时间格式 .locale、当地日历连串 .calendar
(全部有关设置都会自动更新)

补偿表明:地区 包涵了三个属性:时区(如 创新霉素T +8)、当地时间格式(如神州以
年-月-日,United States以 月-日-年)、日历项目(如农历、东瀛日历、东正教日历)

例子

// Create a new DateInRegion which represent the current moment (Date()) in current device's local settings
let now = DateInRegion()

(7)关于心房的好玩的事是何等成效于书中的每种人

是不是早于某时间(给定单位)

概述
在加以单位前提下,比较现有时间是或不是早于给定时间。

声明
func isBefore(date: DateInRegion, orEqual: Bool = false, granularity: Calendar.Component) -> Bool
func isBefore(date: Date, orEqual: Bool = false, granularity: Calendar.Component) -> Bool

参数

  • date: date to compare
  • orEqual: true to also check for equality
  • granularity: The smallest unit that must, along with all larger
    units, be less for the given dates.

陈东笑了四起,自来才子多情,不足为怪。

isInWeekend

回到布尔值,重临调用此属性的小时实例是否在其所在周的星期三时刻段内。
声明:

public var isInWeekend: Bool

陈东有个练丹的情人,叫季胜,他住在嵩山,上知天文,下知地理,三年不见,来信一封,信中写道:“顺利的渡过密西西比河,我当见你。”他是个意外的人,既重视于功名,又欣赏隐居。

流行透露版本

最新版本是4.0.3(Swift3)
最新更新时间:二零一四-10-03
更新日志:Read
CHANGELOG

获取最新版本

(中)


(17)简要叙述整个有趣的事的流程。

加以单位,相比较两年华实例

概述
在加以单位的前提下,比较现有时间是或不是晚于提供的年月。

声明
func compare(to date: DateInRegion, granularity: Calendar.Component) -> ComparisonResult
func compare(to date: Date, granularity: Calendar.Component) -> ComparisonResult

参数

  • date: date to compare
  • granularity:
    你所期待的可比粒度至少要比两年华之间的最大不一样组件之间要小,不然相比结实会议及展览示相等。
    补偿表明
    在同3个月的四个不相同时间时间,以
    为单位相比时,是13分的,比如(伪代码)
    date1 = 2016-11-11 11:11:11
    date2 = 2016-11-12 11:11:11
    抑或更小的的单位相比较,重回结果正是date2 更大

(易)

Your App & SwiftDate

假若你有趣味,能够整理出利用SwiftDate那么些类库的项目。能够在GitHub上开3个issue,提供你的品种名字和链接,大家将会添加到本网站上!


(6)陈东怎么忘记了季胜信中的关于宫女的叙说

leapMonth

归来贰个布尔值,表明某些月份是不是是闰月。
true,表示该时间所在月份是闰月,不然不是闰月。
声明:

public var leapMonth: Bool

陈东望了望窗外,没有简单,没有大火。那是个没有李鱼的地点。

批量修改时间组件的值


概述
给定3个 [时间组件 : 值] 的字典,斯威夫特Date
会依照时间组件的单位充实排序,并修改对应组件的值。
在 SwiftDate 中,规定时间组件的充实排序为:
.nanosecond,.second,.minute,.hour,.day,.month,.year,.yearForWeekOfYear,.weekOfYear,.weekday,.quarter,.weekdayOrdinal,.weekOfMonth.

声明
func at(unitsWithValues dict: [Calendar.Component : Int]) throws -> DateInRegion
func at(unitsWithValues dict: [Calendar.Component : Int]) throws -> Date

参数

  • unitsWithValues: calendar component units to alter

异常
对有些日子组件赋值发生错误时,会抛出 .FailedToCalculate 异常。

重返结果
对点名组件赋值后,生成3个新的时间实例,比给定时间组件更大的零件将不会被涂改,更小的比方没有赋值将总体赋最小值;这一部分的规律,在上一个艺术中有补充表达。

例子

// Create a Region in Rome TimeZone with Gregorian Calendar and Italy locale settings
// 03 gen 2015, 15:10:00 CET
let regionRome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italianItaly)

let date = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)
let time = try! date.at(unitsWithValues: [.year: 2016, .month: 7]) // 01 gen 2016, 00:00:00 CET

(1)陈东吃了什么不应该吃的事物?

时光所对应的单位开始值


概述
利用 .startOf()
方法,传入总括单位后,你能够获得改时间到明日的差值。补充表达:时间是多个点值,而时间的单位都以一段时间的差值,那里的初阶值指的便是时刻点值在时刻单位的间距中的右侧界值;比如,二零一六-11-11
20:39:50 ,以月为单位,伊始值是 贰零壹陆-11-01 00:00:00;以小时为单位
,起初值是 二零一四-11-11 20:00:00。
声明
startOf(component: Calendar.Component) -> DateInRegion
startOf(component: Calendar.Component) -> Date

参数

  • component: component to alter

返回值
回到给定时间单位距离的初始值所对应的 DateInRegion/Date 时间实例。

例子

// Create a Region in Rome TimeZone with Gregorian Calendar and Italy locale settings
let regionRome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italianItaly)

// 03 gen 2015, 15:10:00 CET
let date = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)

let startOfHour = date.startOf(component: .hour) // 03 gen 2015, 15:00:00 CET
let startOfMonth = date.startOf(component: .month) // 01 gen 2015, 00:00:00 CET
let startOfWeek = date.startOf(component: .weekOfMonth) // 28 dic 2014, 00:00:00 CET

(13)第四天到底发生了什么工作

基于日期要素创设时间


将日历的要素集合以 DateComponents 对象封装后成立 DateInRegion
时间是另一种好办法。DateComponents 实例化对象的TimeZone Locale
Calendar
属性都必须注脚以确定保障收获的时光有效;假诺缺点和失误任何三个,将会抛出
.MissingCalTzOrLoc 异常。

声明
func init(components: DateComponents)

参数

  • components: components used to generate the new date

归来结果
回来三个 DateInRegion 时间实例,其日期由传入的 DateComponets
来决定;

例子

var cmp = DateComponents()
cmp.timeZone = TimeZoneName.europeOslo.timeZone
cmp.calendar = CalendarName.gregorian.calendar
cmp.calendar?.locale = LocaleName.englishNorway.locale
cmp.year = 2005
cmp.month = 4
cmp.day = 15
cmp.hour = 20
cmp.minute = 30

// create a new DateInRegion on 15 Apr 2005, 20:30:00 GMT+2
let date = try! DateInRegion(components: cmp)

她急匆匆而来又急火速忙而去,陈东送他通过一座古寺,安国寺,陈东提出进去看看,顺便在影壁上题首诗,他说无休止。

shortMonthName

该时间所在月份的简称,比如美利坚同盟友地区 二月万事俱备是 February ,简称是 Feb 即
二零一四-02-01 改时间的 shortMonthName 就是 Feb
声明:

public var monthName: Int

原来在新浪玩儿,第三回到简书报到。

对时间的时刻实行改动

概述
本着现有的岁月实例, .atTime(hour:minute:second)
方法能够修改时刻,提供
的值,获得三个新的日子,新的实例中国和日本期与日期不变。
异常
借使原时间不能生成新时间,会抛出 .FailedToCalculate 异常。

声明
func atTime(hour: Int, minute: Int, second: Int) throws -> DateInRegion
func atTime(hour: Int, minute: Int, second: Int) throws -> Date

参数

  • hour: hour(s) to set
  • minute: minute(s) to set
  • second: second(s) to set

重返结果
在原时间基础上,根据你提供的变更2个新时间实例,地区安装保证不变。其它,其余的时光组件在须要时
SwiftDate 会加以修改,以保证合理。

例子

// 生成一个新的罗马时间,日历格式选择公历,时间表述格式以意大利为准。
// 03 gen 2015, 15:10:00 CET
let regionRome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italianItaly)
let date = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)

// 应用 `.atTime()` 方法
let newDateAtGivenTime = try! date.atTime(hour: 09, minute: 10, second: 22) // 03 gen 2015, 09:10:22 CET

(18)为何最后明明的题材,陈东不能够回应。

是还是不是早于某时间(给定单位)

概述
在给定单位前提下,相比现有时间是还是不是早于给定时间。

声明
func isBefore(date: DateInRegion, orEqual: Bool = false, granularity: Calendar.Component) -> Bool
func isBefore(date: Date, orEqual: Bool = false, granularity: Calendar.Component) -> Bool

参数

  • date: date to compare
  • orEqual: true to also check for equality
  • granularity: The smallest unit that must, along with all larger
    units, be less for the given dates.

(无比难)

year

回来年份的数值
声明:

public var year: Int

(中)

重中之重特色

那部分内容是swiftdate里面重要特色的一大亮点。

  • 日子实行简单数学生运动算。例如:
    aDate + 2.weeks + 1.hour or (1.year - 2.hours + 16.minutes).fromNow()
  • 时区,地区和日历的转移。使用类DateInRegion,通过组件和操作符进行转向。
  • 算术比较运算比较时间。例如,aDate1 >= aDate2 或者
    aDate1.isIn(anotherDate, .day)
  • 动用时间组件。比如,用你欣赏的时区格式表述 aDateInRegion.day
    hour, minutes等等,
  • 最优雅的方法进行时间和字符串之间的变换。扶助自定义(可读的)和固定格式(ISO8601,
    Alt本田CR-VSS, PAJEROSS, Extended, .NET和一些服从unicode标准的常规字符串)。
  • 用任何时间单位描述二个时刻段。比如120.seconds.in(.minutes) // 2 minutes
  • 快快获得时间和时间间隔。(isYesterday,isTomorrow,isBefore()…)
  • …更加多令人激动的工作!

天文 1

安装

斯维夫特Date扶助多种安装格局。

————————————————————————————

默认Region

当您使用普通的Date对象,你能够在Date.defaultRegion中定义的DateInRegion,这几个地段蕴藏了:

  • .timeZone 以 GMT (Greenwich Mean 提姆e)格式表述的时区
  • .local 以设备的所在地设置日期表述格局
  • .Calendar 设置为装备暗中同意的日历

您可以调用 Date.setDefaultRegion(:) 以转移时间的暗许地区
Date.defaultRegion

以此大概不太重庆大学但要么要记住:时间的那些必要在运用运营时设置好(例如,在UIApplication的delegate中等高校函授数applicationDidFinishLaunching()中设置就行了)。


炼内丹须从冬至节龙时起首,一年后成一珠子,鸡蛋大小;九年后丹成圆形且发光,可照亮一室;十八年后头发变黑,牙齿复生,寒暑不怕;八十一年后内脏空旷,丹上涨至脾,成黄芽铅丹;第一百货公司八十年后,丹上升到头顶,身生五色之气,化为五彩云霞,于是腾空而起,白日飞升。

时间的格式化

概览
斯威夫特Date
提供八个方便人民群众的艺术来输出或分析时间和时间距离字符串,以下为周边时间格式举例:
使用 tr35-31
格式的时日格式字符串,例如 yyyy-MM-dd
对应 2015-01-05

自由符合 ISO8601
及其子规范的小运格式字符串

符合 .NET
的小时格式字符串

扩大化日期/时间格式,详情请参照
EDTF

宣称单位的光阴差,如 (date2 – date1).in(.hours)

人类可读或口语化的字符串,如 “1 hour ago”, “1m”, “now”

五个时间里面包车型地铁差值,比如 “2h,5m,3s”

获得自定义格式的光阴字符串

你能够利用 .string()
办法传入自定义格式,获得时间实例生成对应的字符串。字符串的 Unicode
规范与 Cocoa 用法一致。
声明 DateFormat
包含了 .custom
自定义格式,你可以利用通用的// with DateFormat set to .custom([format
string])
func string(format: DateFormat) -> String

也可以一贯运用接受自定义格式的方法// shortcut to pass directly the
format of the string
func string(custom: String) -> String

参数
format
: a DateFormat
struct. To use custom strings pass .custom()
and pass the value of the formatter

例子

let date = DateInRegion()

let str = date.string(format: .custom(“yyyy-MM-dd HH:mm:ss”)) // example
output: 2016-09-28 13:48:17
// you can also use the shortcut:
let str = date.string(custom: “yyyy-MM-dd HH:mm:ss”) // same result

取得 ISO8601 格式的岁月字符串
SwiftDate 支持 ISO8601
光阴标准的具有要求。你能够依照其子规范而自定义格式。
声明// with DateFormat set to .custom() func string(format:
DateFormat) -> String

参数
format
: a DateFormat
struct. To use custom strings pass .custom() and pass the value of the
formatter

例子

let date = DateInRegion()

// Here some combinations of ISO8601DateTimeFormatter.Options you can
set to format (or parse) an ISO8601 datetime
let iso8601_ex_1 = date.string(format: .iso8601(options:
[.withInternetDateTime])) // 2016-09-29T10:47:39+02:00
let iso8601_ex_2 = date.string(format: .iso8601(options:
[.withFullDate])) // 2016-09-29
let iso8601_ex_3 = date.string(format: .iso8601(options:
[.withWeekOfYear,.withYear])) // 2016W40
let iso8601_ex_4 = date.string(format: .iso8601(options:
[.withFullTime,.withFullDate,.withSpaceBetweenDateAndTime])) //
2016-09-29 10:49:42+02:00
let iso8601_ex_5 = date.string(format: .iso8601(options:
[.withMonth,.withYear,.withTime])) // 20160910:50:36

取得 Alt帕杰罗ss 格式的光阴字符串
SwiftDate 也提供对 科雷傲SS
和AltRSS
时光格式的协助。(蕴含分析与生成字符串)
声明func string(format: DateFormat) -> String // with DateFormat
set to .rss(alt: Bool)

参数
format
: a DateFormat
struct. To get RSS/AltRSS
pass.rss(alt: Bool)
and pass true
or false
to set the alt format.

例子

let date = DateInRegion()

let altrss_string = date.string(format: .rss(alt: true)) // Alt RSS
Format: 29 Sep 2016 10:55:34 +0200
let rss_string = date.string(format: .rss(alt: false)) // RSS Format:
Thu, 29 Sep 2016 10:55:34 +0200

获得 .NET 格式的时间字符串
斯威夫特Date 也提供对 .NET
岁月格式的支撑。(包罗分析与生成字符串)
声明func string(format: DateFormat) -> String // with DateFormat
set to .dotNET

参数
format
: a DateFormat
struct. To get .NET
pass.dotNET
and pass true
or false
to set the alt format.

例子

let date = DateInRegion()

let donet_string = date.string(format: .dotNET) //
/Date(1475139751633+0200)/

获得扩充化(EDTF)格式的年月字符串
斯威夫特Date 也提供对扩展化日期/时间格式的协助。
声明func string(format: DateFormat) -> String // with DateFormat
set to .extended

参数
format
: a DateFormat
struct. To get extended datetime formatted string pass .extended
and pass true
or false
to set the alt format.

例子

let date = DateInRegion()

let str = date.string(format: .extended) // Thu 29-Sep-2016 AD
11:31:23.886 GMT+2

获得时间距离的字符串表述
依傍 斯威夫特Date
,你能够很有益的将时间距离或五个时间之内的差值,以3个或多少个单位输出成字符串。就算你想要获取的中低档单位的值能够被全部进位,那低级单位所对应的值就被赋值为
0。比如 120秒 要是转换到 分
、秒
的重组,会被转换来 2分 0秒
; 125秒 则会博得 2分 5秒

声明多少个时刻单位时public func in(_ components:
[Calendar.Component], of calendar: CalendarName? = nil) ->
[Calendar.Component : Int]
单个时间单位时public func in(_ component: Calendar.Component, of
calendar: CalendarName? = nil) -> Int?

参数
component
or components
: specify the component or an array of compone .extended
and pass true
or false
to set the alt format.

例子

let dateA = DateInRegion()

let dateB = dateA + 20.minutes + 120.seconds // create another date with
some diff
// Get difference in minutes
let diff_in_minutes = (dateB – dateA).in(.minute) // 22 minutes
// Get difference in seconds and minutes
let diff_in_min_and_secs = (dateB – dateA).in([.minute,.second])
// lower components are grouped. You will get .second=0, .minute=2
// This is another example
let another_diff: TimeInterval = 125 // 125 seconds
let diff_in_min_and_secs_2 = another_diff.in([.minute,.second])
// you will get .minute=2 and .second=5

获得 iOS 样式的日子字符串
您能够采纳 Foundation
中的时间格式来输出时间字符串。
声明func string(dateStyle: DateFormatter.Style = .medium, timeStyle:
DateFormatter.Style = .medium) -> String

参数
dateStyle
: the style used to print a date as DateFormatter.Style
. If not specified.medium
is used.

timeStyle
: the style used to print a time as DateFormatter.Style
. If not specified .medium
is used.

例子

let date = DateInRegion() // create a date from current time in local
device’s region and calendar

// Some examples of date as string formatted with different styles for
date and time
let example_1 = date.string(dateStyle: .medium, timeStyle: .long) //
Sep 29, 2015, 1:01:13 PM GMT+2
let example_2 = date.string(dateStyle: .short, timeStyle: .short) //
9/29/15, 1:00 PM
let example_3 = date.string(dateStyle: .long, timeStyle: .none) //
September 29, 2015

获得人类可读或白话式时间字符串
你能够利用 Foundation
发源定义日期 –
时间格式来输出时间字符串;同样的,时间距离也能够选取口语化字符串来发表。
声明取得多个岁月与现时无时无刻的差值时func colloquialSinceNow() throws
-> (date: String, time: String?)
收获四个时间之间的差值时func colloquial(toDate date: DateInRegion)
throws -> (date: String, time: String?)
留神:该方法重临的是2个日子与时光的元组。
异常假使七个时间使用区别的日历,会抛出 .DifferentCalendar
那些;假诺不可能测算出八个时间的距离,会抛出 .FailedToCalculate
异常。
参数
date
: reference date for comparisor

例子

// Returned tuples (in EN):

// “past month” for interval, “Aug, 29 2016” for relevant time
let dateA = DateInRegion() – 1.months
let (colloquial,relevantTime) = try! dateA.colloquialSinceNow()

// Returned tuples (in EN):
// “2 hours ago” for interval, “at 11:28” for relevant time
let dateB = DateInRegion() – 2.hours – 14.minutes
let (colloquial,relevantTime) = try! dateB.colloquialSinceNow()

// Returned tuples (in EN):
// // “14 minutes ago” for interval, nil for relevant time
let dateC = DateInRegion() – 14.minutes
let (colloquial,relevantTime) = try! dateC.colloquialSinceNow()

// Returned tuples (in EN):
// “2012” for interval, “Sep 2012” for relevant time
let dateD = DateInRegion() – 4.years
let (colloquial,relevantTime) = try! dateD.colloquialSinceNow()

钦定单位下,获取七个时间里面包车型客车距离字符串
SwiftDate
能够在钦点组件单位的前提下,获取五个时刻的差值,并出口为字符串;你可以安装任意3个组件的展示地点,比如(年利用
y
或years
来表述);组件所对应的最大值以及最小值都会被妥贴处理,比如日月年那么些单位最小值是
1,最大值是 12,而时分秒的最大值是 60 ,最小值是 0。
声明 获取二个时日与今后时刻的差值时func
timeComponentsSinceNow(options:,shared:) throws -> String
获取八个时间里面包车型大巴差值时func timeComponents(to:options:shared:) throws
-> String

异常假定不能计算出可行的时光间隔,将会抛出 .FailedToCalculate
错误。
参数
to
: reference date for comparisor

options
: struct ComponentsFormatterOptions which defines a list of options used
to print time components

例子

let region = Region.GMT()

let dateB = DateInRegion(absoluteDate: Date(), in: region)
let dateC = dateB – 2.years – 4.months – 5.days

let str2 = try! dateC.timeComponents(toDate: dateB, options:
ComponentsFormatterOptions(style: .positional)) // -2y 4m 0w 5d 0:00:00

let str3 = try! dateC.timeComponents(toDate: dateB, options:
ComponentsFormatterOptions(style: .full)) // -2 years, 4 months, 0
weeks, 5 days, 0 hours, 0 minutes, 0 seconds

let str4 = try! dateC.timeComponents(toDate: dateB, options:
ComponentsFormatterOptions(zero: .dropAll)) // -2y 4m 5d
let dateD = dateB + 1.months
let str5 = try! dateD.timeComponentsSinceNow(options:
ComponentsFormatterOptions(allowedUnits: [.weekOfMonth,.day], zero:
.dropAll)) // 4w 2d

你叫什么名字?

weekOfMonth

回来月份所含有的周数,此处依照 IOS 8601 的正式,每一个月横跨的周数,比如
贰零壹伍年十一月 的 weekOfMonth 是 4 ,而 2016 年 2 月的 weekOfMonth 是 5

声明:

public var weekOfMonth: Int

好吃吗?

依照字符串解析时间


明显,解析字时间符串并转换来时间实例很麻烦。斯维夫特Date
帮助广大时刻格式,以帮您升高功用,缩小费用。
format 参数赋值,以宣称你使用的光阴格式:能够是自定义时间格式或
ISO8601 datetime、.NET datetime 等标准化时间格式。

声明
func init(string: String, format: DateFormat, fromRegion region: Region? = nil) throws

参数

  • string : this is the string you want to parse
  • format : this is the format in which you expect the string is
    formatted. DateFormat is an enum: .custom (for custom format),
    .iso8601 to parse all available specs for ISO8601 DateTime Format,
    .extended to parse Extended DateTime format, .rss to parse both
    RSS and AltRSS datetime formats and .dotNET to parse .NET datetime
    strings.
  • region : is the region in which you want to express specified
    date. If nil or not specified Region.Local(( is used instead.

归来结果
回去结果是 包含地区音信的 DateInRegion 时间实例。
例子

let rome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italian)

// 基于自定义时间格式解析时间字符串
let date1 = try! DateInRegion(string: "1999-12-31 23:30:00", format: .custom("yyyy-MM-dd HH:mm:ss"), fromRegion: regionRome)

// 基于 AltRss 标准来解析时间字符串
let date2 = try! "3 feb 2001 15:30:00 +0100".date(format: .rss(alt: true), fromRegion: regionRome)
// 同上
let date3 = try! DateInRegion(string: "3 feb 2001 15:30:00 +0100", format: .ss(alt: true)), fromRegion: regionRome)

//  解析 ISO8601 标准互联网时间字符串
let date4 = DateInRegion(string: "2001-02-03T15:30:00+01:00", format: .iso8601(options: .withInternetDateTime), fromRegion: regionRome)

// 解析自定义时间格式字符串
let date5 = try! DateInRegion(string: "sab 3 feb 2001, 30 minutes after 15 (timezone is +0100)", format: .custom("eee d MMM YYYY, m 'minutes after' HH '(timezone is' Z')'"), fromRegion: regionRome)

(5)“赠君照初心”指的是什么样事情

Swift Package Manager安装

日前还不扶助!

陈东说:“什么?”又说:“你来此有年,大可不必如此拘谨。”

CocoaPods安装格局

CocoaPods是三个Objective-C和Swift的信赖性管理器。

安装CocoaPods命令:

$ gem install cocoapods

SwiftDate 4.+的本子须求利用CocoaPods 1.0.1+。

第一天

是不是等于某时间

概述
相比较现有时间实例是或不是完全等于给定时间。

声明
func isEqual(to compareDate: DateInRegion) -> Bool

参数

  • compareDate: a date to compare against

第四天

weekdayOrdinal

以各样月的第三天为当月第贰周的源点,无视全年的礼拜总计规则,比如各个月第五 天就是第叁日,第 8 天便是第①周。

声明:

public var weekdayOrdinal: Int

李鱼说,那是自作者的阿娘,你记得千万不要接受他给您吃的东西。

isTomorrow

回到布尔值,重临调用此属性的年月实例是还是不是在前日。
声明:

public var isTomorrow: Bool

《旅行常见难点集》

相比较时间


概述
在 Swift3 的 Foundation 库中,已经支撑相比较 Date 时间实例。
SwiftDate 为含有地区属性的 DateInRegion
补充了一般的相比较艺术,并经过丰盛新办法扩充了现有 Foundation
库对分化粒度下的时日相比。

比较容易时间
你可以采用 >,>=,<,=< 运算符来相比时间,例如:

// 03 gen 2015, 15:10:00 CET
let date1 = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)
let date2 = try! DateInRegion(components: [.year: 2015, .month: 2, .day: 5, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)

if date2 > date1 { // DateInRegion supports Equatable protocol you can use >=, <=, < or >
    print("'\(date2)' date is later than '\(date1)'")
}

if date2 == date1 {
  // simple equality
}

无事。临贴。

nanosecond

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

public var nanosecond: Int

注意
太公历日历定义贰个礼拜有7天,一年有356天,或闰年366天。
不过,356或366都不平均地分为7天的周,因而普通状态下,一年的最终七日在下一年的一天截至,一年的第⑧八日以前年初阶。
为了协调那或多或少,ISO
8601概念了一个周编号年份,包涵52或53整周(364或371天),以便一年的首先周被钦定为带有一年中首先个礼拜五的星期。

你可以将yearForWeekOfYear属性与weekOfYear和weekday属性合营使用,以获得与一年中给定星期的特定工作日对应的日子。
例如,二〇〇七年第肆3周(ISO
二〇〇六-W53-6)的第肆天对应于公历日历上二〇〇五年一月1日周天。比如波士顿小运二〇一六-12-31 15:10:12 他的 yearForWeekOfYear2016weekOfYear
1weekday3

(难)

prevMonth

岁月所在月份的上七个月的当天的起头时间,比如 2014-03-31 13:30:00 的
nextMonth 是 2014-02-29 00:00:00,注意 斯威夫特Date
会自动换算不相同月份天数差别的题材。
声明:

public var prevMonth: DateInRegion 
public var prevMonth: Date

明明问陈东:

startOf()

给定三个单位,重临时间在此单位的初叶值,比如给定以年为单位, 二零一六-11-11
11:11:11 的 startOf() 是 2016-01-01 00:00:00 ;给定 时 为单位,会反回
2016-11-11 11:00:00
声明:

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

秒智力商数时间到了,看完回答难点,全答对,南开南开随便上。

hour

归来时分秒中 的数值
声明:

public var hour: Int

晚上。

day

回二〇一八年月日中 的数值,如 30
声明:

public var day: Int

(16)那么些典故贯穿三界,有神明,魔鬼、鬼魂、人,明明、季胜、陈东、李鱼分其余身价分别是什么样?

概况

动用
斯威夫特Date,您能够万分便宜的操控时间的机件。无论是不是设置地区属性,DateInRegionDate都实现了扳平套属性和措施来拓展时间日期的管住。

请留意:使用简易时间
Date实例时,实际上是依照了设备私下认可的地面来开首化了
.defaultRegionRegion.GMT()是由装备暗中认可的localeCalendar和日前配备所在地的时区所主宰,.defaultRegion
的起初值便是Region.GMT()

要是想要修改的暗许的区域,调用Date的静态方法 .setDefaultRegion()
即可!

(10)“那样的女郎,哪怕做错什么都以足以包容的。”李鱼做错了如何

nextWeekend

再次回到该时间所在周的下个星期一,这么些周末以元组表示,第3个要素是下一周末初始的日子,第一个是前一周末的停止时间。且那七个小时都以
DateInRegion 实例。
专注:是下个周的星期四,不是岁月自然所在周的星期二
声明:

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

假如新浪旧日的同桌,能够报一下网名哦。

时间所对应的单位甘休值

概述
利用 .startOf() 方法,传入单位后,你能够取得现有时间对应的停止址。

声明
endOf(component: Calendar.Component) -> DateInRegion
endOf(component: Calendar.Component) -> Date

参数

  • component: component to alter

回到结果
再次回到给定时间单位距离的利落址所对应的 DateInRegion/Date 时间实例。

// Create a Region in Rome TimeZone with Gregorian Calendar and Italy locale settings
let regionRome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italianItaly)

// 03 gen 2015, 15:10:00 CET
let date = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)

let startOfHour = date.endOf(component: .hour) // 03 gen 2015, 15:59:59 CET
let startOfMonth = date.endOf(component: .month) // 31 gen 2015, 23:59:59 CET
let startOfWeek = date.endOf(component: .weekOfMonth) // 03 gen 2015, 23:59:59 CET

新生季胜手足卷曲,无法站稳有十年之久。时人笔记记载季胜:

修改时间

(易)

yearForWeekOfYear

ISO8601
的周数总结规则下,日期所属的年度。大概是当下日子的二零二零年,可能下一年,恐怕当年。
声明:

public var yearForWeekOfYear: Int

你1位?

startOfDay

回来当前时间所在 的开局时刻,比如 二零一五-11-11 23:10:00 的
startOfDay 是 二零一五-11-11 00:00:00 。注意会构成时区和日历。
声明:

public var startOfDay: DateInRegion
public var startOfDay: Date

(8)为何新兴季胜手足卷曲

era

回去公元状态,我们平常生活中的 贰零壹伍 年都是公元年为起源,这几个时刻的 era
都为 1 , 而公元前的年份如 -两千 年,这几个时刻的 era 都是
0。所以在操作近代时刻时,无需考虑此属性。
声明:

public var era: Int

见状什么?

nextMonth

时间所在月份的下二个月的当日的苗头时间,比如 二〇一六-03-31 13:30:00 的
nextMonth 是 二零一四-04-30 00:00:00,注意 SwiftDate
会自动换算差异月份天数不一样的标题。
声明:

public var nextMonth: DateInRegion
public var nextMonth: Date

所谓内丹,正是以人体为鼎、炉,以内息为原料来炼丹。

month

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

public var month: Int

看不懂的,就点赞,栽赃别人去:

是或不是等于某时间

概述
正如现有时间实例是不是完全等于给定时间。

声明
func isEqual(to compareDate: DateInRegion) -> Bool

参数

  • compareDate: a date to compare against

第二天

DateInRegion 和 Region

SwiftDate
为了提供整机的年月和日期管理的职能,引入了五个主要的新东西以及数个增添。

首先个是一个结构体(struct),称为Region:region,正如其名目,它是对2个地理地方在时间系列中的描述,当中涵盖八个区别的特色:

中午。李鱼提着八宝盒出去。说,笔者去庙里上香,庙里有很多孤儿,真是要命。

weekdayName

某些日期的礼拜名称,若是您设定是中夏族民共和国地区,前一周五为“周日”,东瀛地区正是“火曜日” ,美利坚合作国地域正是 “Tuesday”,注意此值取决于地区属性。

声明:

public var weekdayName: String

(11)第④天李鱼为何去安国寺

斯威夫特Dare 中文版表明文书档案 – 修改时间 – 5

@(丁子香园学习笔记)[swift, 翻译]

您醒一醒?

nearestHour

遵照四舍五入的法子取出时间的近年来小时。简单举例:比如 8:15 会再次回到 8 ,而
8:50 会回到 9
声明:

public var nearestHour: Int

(难)

weekday

在 ISO 8601 的周数总结规则下,在岁月所属的周中, 是星期几,且规定了
1是周一,也正是每一周的起点是周末。如奥Crane时光 二零一四-11-31 是礼拜天 ,其
weekday5

声明:

public var weekday: Int

他还写诗,“小编有古时镜,赠君照初心。”

SwiftDate概况

从Swift宣布起,大家就不曾丢弃选取Swift。

本来,大家意在在档次能够轻松自如地保管日期和时区,所以创造SwiftDate以此类库。有了“她”在Swift里面优雅地拍卖时间。

在iOS、macOS、watchOS、tvOS上,以及斯维夫特包容的阳台上(Linux)都能完美运转!

其它,那一个类库是免费的,开源的!

陈东到山头打猎,三头狐狸扔下到口的蛇。

加以单位,相比两时光实例

概述
在给定单位的前提下,比较现有时间是否晚于提供的大运。

声明
func compare(to date: DateInRegion, granularity: Calendar.Component) -> ComparisonResult
func compare(to date: Date, granularity: Calendar.Component) -> ComparisonResult

参数

  • date: date to compare
  • granularity:
    你所期待的可比粒度至少要比两时光之内的最大差别组件之间要小,不然相比较结实会议及展览示相等。
    增补表明
    在同一个月的三个不等时间时间,以
    为单位比较时,是格外的,比如(伪代码)
    date1 = 2016-11-11 11:11:11
    date2 = 2016-11-12 11:11:11
    也许更小的的单位相比较,重回结果正是date2 更大

(极难)

weekOfYear

在 ISO 8601 的周数计算规则下,日期所属的周数。如胡志明市时刻 二〇一五-11-31 是第69 周,二〇一四-12-31 是首先周。
声明:

public var weekOfYear: Int

一千年后,大家说着爱护,说着爱;一千年前,大家说偕老,说同穴。

Authors & License

SwiftDate是由Daniele
Margutti
创立并保险,个中项指标三个重中之重贡献者是Jeroen
Houtzager

迎接为开源项目作出进献!

此库的源代码服从MIT
License
,
你能够没有别的限制地在生意项目中应用!

唯一的供给正是扩充一行表明:

Date and Time Management is provided by SwiftDate - http://www.swift-date.com
Created by Daniele Margutti and licensed under MIT License.

(极难)

概览


三个关系到现实地域的日子能够由多样格局创立;那种日子足以由一对 Date
Region 组成,也许从自定义时间格式的字符串解析(斯维夫特Date
帮助自定义的岁月格式,诸如 ISO8601
标准格式
RSS
或AltRSS

.NET
时间
),再也许能够通过解析
Calendar.Component指标的集结来创建。
当然你也足以经过数学生运动算从另多个时刻来新建时间。
本章节位列了全体有关创建时间的点子,无论是还是不是含有地域新闻,DateInRegion
Date 都适用于这几个方式。

(中)

时刻的零部件

明明。

赢得多个时刻中最漫长(时间线上最靠左的)的时间

概述
在加以的四个日子实例集合中,再次回到在那之中最遥远的时光。相比依据相对时间值,时间实例的地段,时区,表述格式等零件不会对比较结实发生影响。

声明
(DateInRegion) static func earliestDate(_ list: [DateInRegion]) -> DateInRegion
(Date) static func earliestDate(_ list: [DateInRegion]) -> Date

例子

// date1 = 2015-01-03 15:10:00
let date1 = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 10, .second: 0], fromRegion: regionRome)
// date2 = 2014-12-30 20:10:00
let date2 = try! DateInRegion(components: [.year: 2014, .month: 12, .day: 30, .hour: 20, .minute: 10, .second: 0], fromRegion: regionRome)
// date3 = 2015-01-03 15:20:00
let date3 = try! DateInRegion(components: [.year: 2015, .month: 1, .day: 3, .hour: 15, .minute: 20, .second: 0], fromRegion: regionRome)

// get the latest date in a set
let earliestDate = DateInRegion.earliestDate([date1,date2,date3]) // is date2 30 dic 2014, 20:10:00 CET
// or directly via Array extension
let earliestDate = [date1,date2,date3].earliestDate

“士有百行,女唯四德。”

thisWeekend

回去该时间所在周的周末,那个周末以元组表示,第一个因素是本周末始于的年华,第三个是本周末的利落时间。且这多个时刻都是
DateInRegion 实例。

声明:

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

依照给定的时刻和地段来创设时间实例


加以时间和其所在地段,你能够创立对应的 DateInRegion 对象。创建后,使用
DateInRegion
对象开始展览的具备操作,都将应用对应地区的渴求;DateInRegion对应的属性和方法会自动套用区域的装置;
声明
func init(absoluteDate date: Date, in region: Region)
参数

  • date: define the absolute Date you want to use to create the new
    DateInRegion. Passed date is indipendent from any geographic
    timezone/calendar or locale because it’s expressed in absolute time.
  • region: define the destination Region in which you want to
    express passed date

重回结果
回来对象是二个解析自给定地区的 DateInRegion 时间实例。

例子

// Create a Region in Rome TimeZone with Gregorian Calendar and Italy locale settings
let regionRome = Region(tz: TimeZoneName.europeRome, cal: CalendarName.gregorian, loc: LocaleName.italianItaly)
// Resulting object is DateInRegion which express the current moment in Rome
let dateInRome = DateInRegion(absoluteDate: Date(), in: regionRome)

补充表明:

光阴的那么些属性值需考虑上下文的地面与日历系统;若是调用者是DateInRegion,SwiftDate
将会动用已经钦赐的.region来计算具体属性值,假使调用者是经常Date,SwiftDate
将会基于暗中认可的Date.defaultRegion来测算属性值。以下有所属性与组件都服从此原则。

是或不是晚于某时间(给定单位)

概述
在加以单位粒度前提下,比较现有时间是还是不是晚于给定时间。

声明
func isAfter(date: DateInRegion, orEqual: Bool = false, granularity: Calendar.Component) -> Bool
func compare(to date: Date, granularity: Calendar.Component) -> ComparisonResult
func isAfter(date: Date, orEqual: Bool = false, granularity: Calendar.Component) -> Bool

参数

  • date: date to compare
  • orEqual: true to also check for equality
  • granularity: The smallest unit that must, along with all larger
    units, be less for the given dates.

概览


采取 SwiftDate
来对时间开展连锁修改操作11分简便;修改时间组件,相比较七个时刻(时间的区别以他们中间的两样组件来代表)。无论是带有地区属性的
DateInRegion 时间实例照旧单一结构的 Date
时间实例,都能够展开那个操作。

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图