swift Date
Posted ihoudf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift Date相关的知识,希望对你有一定的参考价值。
作者:想聽丿伱說衹愛我
链接:https://www.jianshu.com/p/3170a2e7d16a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
一、简介
可使用DateFormatter
将Date格式化成字符串,经常通过Calendar
和DateComponents
来获取符合某条件的Date。
二、API
- 获取1970到2001年的间隔(秒)
public static let timeIntervalBetween1970AndReferenceDate: TimeInterval
print(Date.timeIntervalBetween1970AndReferenceDate)
//978307200.0
- 获取2001-1-1 00:00:00到现在的间隔(秒)
public static var timeIntervalSinceReferenceDate: TimeInterval get
print(Date.timeIntervalSinceReferenceDate)
//629172967.099814
- 初始化方法
- 当前日期
public init()
print(Date())
//2020-12-09 02:18:16 +0000
- 当前日期偏移多少秒后的日期
public init(timeIntervalSinceNow: TimeInterval)
print(Date(), Date(timeIntervalSinceNow: 10), separator: "\\n")
//2020-12-09 02:22:05 +0000
//2020-12-09 02:22:15 +0000
- 1970-01-01 00:00:00偏移多少秒后的日期
public init(timeIntervalSince1970: TimeInterval)
print(Date(timeIntervalSince1970: 10))
//1970-01-01 00:00:10 +0000
- 日期date偏移多少秒后的日期
public init(timeInterval: TimeInterval, since date: Date)
print(Date(timeInterval: 10, since: Date()), Date(timeIntervalSinceNow: 10),
separator: "\\n")
//2020-12-09 02:27:21 +0000
//2020-12-09 02:27:21 +0000
- 2001-01-01 00:00:00偏移多少秒后的日期
public init(timeIntervalSinceReferenceDate ti: TimeInterval)
print(Date(timeIntervalSinceReferenceDate: 10))
//2001-01-01 00:00:10 +0000
- 时间间隔
- 与2001-01-01 00:00:00的间隔(秒)
public var timeIntervalSinceReferenceDate: TimeInterval get
let d = Date()
print(d.timeIntervalSinceReferenceDate)
//629173835.230096
- 与时间date的间隔(秒)
public func timeIntervalSince(_ date: Date) -> TimeInterval
let d = Date()
print(d.timeIntervalSince(Date(timeIntervalSinceNow: 10)))
//-10.000119924545288
- 与当前时间的间隔(秒)
public var timeIntervalSinceNow: TimeInterval get
let d = Date(timeIntervalSinceNow: 10)
print(d.timeIntervalSinceNow)
//9.999890923500061
- 与1970-01-01 00:00:00的间隔(秒)
public var timeIntervalSince1970: TimeInterval get
let d = Date()
print(d.timeIntervalSince1970)
//1607481591.40725
- 返回偏移多少秒后的新日期
public func addingTimeInterval(_ timeInterval: TimeInterval) -> Date
相当于+ -
let d = Date()
print(d, d.addingTimeInterval(10), d+10, separator: "\\n")
//2020-12-09 02:47:55 +0000
//2020-12-09 02:48:05 +0000
//2020-12-09 02:48:05 +0000
- 日期偏移多少秒
public mutating func addTimeInterval(_ timeInterval: TimeInterval)
突变方法 相当于+= -=
var d = Date()
print(d)
d.addTimeInterval(10)
print(d)
d+=10
print(d)
//2020-12-09 02:48:35 +0000
//2020-12-09 02:48:45 +0000
//2020-12-09 02:48:55 +0000
- 获取一个遥远的将来的日期
public static let distantFuture: Date
print(Date.distantFuture)
//4001-01-01 00:00:00 +0000
- 获取一个遥远的过去的日期
public static let distantPast: Date
print(Date.distantPast)
//0001-01-01 00:00:00 +0000
8.比较另一个日期
public func compare(_ other: Date) -> ComparisonResult
enum ComparisonResult : Int
case orderedAscending = -1//升序 <
case orderedSame = 0 //相等 =
case orderedDescending = 1//降序 >
var d = Date()
print(d.compare(d+10).rawValue)
//-1
- 比较符与运算符
//两日期是否相等
public static func == (lhs: Date, rhs: Date) -> Bool
//左日期是否小于右日期
public static func < (lhs: Date, rhs: Date) -> Bool
//左日期是否大于右日期
public static func > (lhs: Date, rhs: Date) -> Bool
//相当于addingTimeInterval方法
public static func + (lhs: Date, rhs: TimeInterval) -> Date
public static func - (lhs: Date, rhs: TimeInterval) -> Date
//相当于addTimeInterval方法
public static func += (lhs: inout Date, rhs: TimeInterval)
public static func -= (lhs: inout Date, rhs: TimeInterval)
- 日期描述
- 通用描述
public var description: String get
默认按YYYY-MM-DD HH:MM:SS ±HHMM
输出日期,±HHMM
代表时区与UTC的时差,以小时和分钟为单位
var d = Date()
print(d, d.description, separator: "\\n")
//2020-12-09 03:16:05 +0000
//2020-12-09 03:16:05 +0000
- 本地化描述
public func description(with locale: Locale?) -> String
传nil时与description
相同
let d = Date()
print(d.description, d.description(with: nil),
d.description(with: Locale(identifier: "zh")), separator: "\\n")
//2020-12-09 03:18:09 +0000
//2020-12-09 03:18:09 +0000
//2020年12月9日 星期三 中国标准时间 上午11:18:09
- Strideable协议
- 与日期other的距离(秒)
public func distance(to other: Date) -> TimeInterval
与timeIntervalSince
方法的结果值为正负
let d = Date()
print(d.distance(to: d+10))
print(d.timeIntervalSince(d+10))
//10.0
//-10.0
- 返回增加多少秒后的新日期
public func advanced(by n: TimeInterval) -> Date
与addingTimeInterval
相同
let d = Date()
print(d, d.advanced(by: 10), d.addingTimeInterval(10), separator: "\\n")
//2020-12-09 03:31:19 +0000
//2020-12-09 03:31:29 +0000
//2020-12-09 03:31:29 +0000
以上是关于swift Date的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3.1 Coredata 按字母升序排序,但保留以数字开头的记录
两列 CSV 数据排序 - 一列 str(升序)另一列 date(降序)
[C++]——日期类运算符的重载(针对Date类重载<,>,<=,>=,==,++,<<,>>运算符,并构建排序函数,将时间进行升序排序)
[C++]——日期类运算符的重载(针对Date类重载<,>,<=,>=,==,++,<<,>>运算符,并构建排序函数,将时间进行升序排序)
2023-01-11:体育馆的人流量。编写一个 SQL 查询以找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录。返回按 visit_date 升序排列 的结果表。 DROP TAB