不知道为什么,日期转换这个知识点,总是感觉自己老是忘,感觉现在也需要记录下,总结下
首先如果我们要让日期字符串按照我们想要指定的格式输出的话,我们需要先创建一个格式化器
let dateformatter = DateFormatter()
然后我们需要指定下格式化器的环境,在这个环境下输出相应的时间。我们一般设置为en就可以
dateformatter.locale = Locale(identifier: "en")
然后我们再去设置转换日期的格式
dateformatter.dateFormat = "EEE MM dd HH:mm:ss zzz yyyy"
其中对应的日期格式应该是 EEE MMM dd HH:mm:ss zzz yyyy
E表示星期几
M表示月份
d表示是几号
H表示24小时制
m表示分钟
s表示秒
y表示年
Z表示时区
zzz也是一样的
还有就是这里需要注意的是locale我们一定要去设置,因为DateFormatter实例话的dateFormat属性用上面的格式来进行转换在模拟器上可以解析,但是在真机上会存在问题。据网上资料说是因为上面的这种格式化字符串只有在英文的操作系统下才有效,为了保证在任何设置下都可以解析,我们就要去设置locale,设置为en 和en_US应该都可以。
还有介绍下日历的用法,我们可以用先获取当前的日历对象
//获得当前的日历
let calendar = NSCalendar.current
然后判断当前时间是不是今天,昨天,我们可以直接用函数来进行判断
判断是不是今天
if calendar.isDateInToday(date)
判断是不是昨天
calendar.isDateInYesterday(date)
我们可以根据日历直接获取当前日期的年份
print(calendar.component(.year, from: date))
设置下如果比较的是年份,可以通过这样来比较,其中self代表的就是我们传入的日期
let componentsSet = Set<Calendar.Component>([.year])
let comps = calendar.dateComponents(componentsSet, from:self, to: Date())