Emcee
47 строк · 1.5 Кб
1import Foundation
2
3public struct DateSince1970ReferenceDate: Codable, Hashable, Comparable, ExpressibleByFloatLiteral, ExpressibleByIntegerLiteral {
4public let date: Date
5
6public init(timeIntervalSince1970: TimeInterval) {
7date = Date(timeIntervalSince1970: timeIntervalSince1970)
8}
9
10public typealias FloatLiteralType = Double
11public init(floatLiteral: TimeInterval) {
12date = Date(timeIntervalSince1970: floatLiteral)
13}
14
15public typealias IntegerLiteralType = Int
16public init(integerLiteral value: Int) {
17date = Date(timeIntervalSince1970: TimeInterval(value))
18}
19
20public var timeIntervalSince1970: TimeInterval {
21date.timeIntervalSince1970
22}
23
24public func addingTimeInterval(_ value: TimeInterval) -> Self {
25return Self(timeIntervalSince1970: timeIntervalSince1970 + value)
26}
27
28public static func - (lhs: Self, rhs: IntegerLiteralType) -> Self {
29return lhs.addingTimeInterval(-TimeInterval(rhs))
30}
31
32public static func + (lhs: Self, rhs: IntegerLiteralType) -> Self {
33return lhs.addingTimeInterval(TimeInterval(rhs))
34}
35
36public static func - (lhs: Self, rhs: FloatLiteralType) -> Self {
37return lhs.addingTimeInterval(-rhs)
38}
39
40public static func + (lhs: Self, rhs: FloatLiteralType) -> Self {
41return lhs.addingTimeInterval(rhs)
42}
43
44public static func < (lhs: Self, rhs: Self) -> Bool {
45lhs.date < rhs.date
46}
47}
48