本文将为你演示日期类型的使用,以及如何对日期进行格式化。
首先引入需要使用到的界面框架
import UIKit
初始化一个日期对象,它的值和当前电脑中的日期相同
var date = Date()
获得当前60分钟之后的时间
date.addTimeInterval(60 * 60)
获得当前60分钟之后的时间,并存储在一个常量之中。
let sencondDate = date.addTimeInterval(60 * 60)
对两个时间进行比较,当时间小于进行比较的时间时,返回值为-1。
比较的结果为枚举类型,和字符串的比较相同,
枚举成员的值包含:-1、0和1。
rawValue:原始值
date.compare(date.addTimeInterval(60 * 60)).rawValue
当两个时间相等时,返回的原始值为0
date.compare(date.addTimeInterval(0)).rawValue
当时间大于进行比较的时间时,返回的原始值为1
date.compare(date.addTimeInterval(-60 * 60)).rawValue
获得当前时间的字符串形式
date.description
获得两个时间之间的差值,单位为秒。
date.timeIntervalSince(secondDate)
获得从1970年1月1日0点开始,经过多少秒可以到达指定的时间
date.timeIntervalSince1970
获得指定日期和当前时间之间的差值
date.timeIntervalSinceNow
接着我们将对日期进行格式化,首先初始化一个日期格式化类的实例
let dtFormatter = DateFormatter()
设置日期格式化对象的本地属性
dtFormatter.locale = Locale.current
设置日期的格式为全格式,即包含年、月、日星期等各种信息
dtFormatter.dateStyle = DateFormatter.Style.full
对日期进行格式化,然后点击显示结果图标,查看日期格式化后的结果。
dtFormatter.string(from: date)
查看日期格式化后日期样式,然后再次点击结果图标,隐藏该结果。
使用长类型对日期进行格式化,然后点击显示结果图标,查看日期格式化后的结果。
1 dtFormatter.dateStyley = DateFormatter.Style.long 2 dtFormatter.string(from: date)
查看日期格式化后日期样式,然后再次点击结果图标,隐藏该结果。
接着继续联系其他的日期格式化样式。
使用中间样式对日期进行格式化,并查看右侧输出的结果。
1 dtFormatter.dateStyley = DateFormatter.Style.medium 2 dtFormatter.string(from: date)
使用短样式对日期进行格式化,并查看右侧输出的结果。
1 dtFormatter.dateStyley = DateFormatter.Style.short 2 dtFormatter.string(from: date)
使用自定义的日期样式,对日期进行格式化,并观察右侧输出的结果。
注意小时数为12小时进制。
1 dtFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss" 2 dtFormatter.string(from: date)
将小写的h修改为大写的H,之后再次对日期进行格式化,并观察右侧输出的结果,
此时显示为24小时进制
1 dtFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" 2 dtFormatter.string(from: date)
使用自定义的日期样式,对日期进行格式化,只显示日期的年、月、日信息。
1 dtFormatter.dateFormat = "yyyy-MM-dd" 2 dtFormatter.string(from: date)
使用自定义的日期样式,对日期进行格式化,注意只使用一个M表示月份,
此时的月份将使用简化的样式,不会对小于10的数字进行补0
1 dtFormatter.dateFormat = "yyyy-M-dd" 2 dtFormatter.string(from: date)
我们同样可以将字符串转换为日期,首先定义一个包含日期信息的字符串。
let dateString = "2018-10-10 12:00:00"
设置日期格式化对象的日期和时间格式。
dtFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
然后通过日期格式化对象,将字符串转换为日期对象,
从而实现了从字符串向日期进行转换的功能
let newDate = dtFormatter.date(from: dateString)
如果需要比较两个日期的先后,可以先获得两个日期和固定参考日期的距离,
然后再对距离进行比较即可。
(newDate?.timeIntervalSinceReferenceDate) !> date.timeIntervalSinceReferenceDate
技巧:如果您需要注册公司版的苹果开发账号,请尽早申请邓白氏码,这个申请比较花费时间。