Files

182 lines
6.6 KiB
Swift
Raw Permalink Normal View History

2024-02-27 23:34:55 +08:00
//
// Date+.swift
// yinmeng-ios
//
2024-03-05 14:04:09 +08:00
// Created by yinmeng on 2024/2/27.
2024-02-27 23:34:55 +08:00
//
import Foundation
extension Date {
///
/// - Returns:
static func getNowTimeStamp() -> Int {
let nowDate = Date.init()
//10
let interval = Int(nowDate.timeIntervalSince1970)
return interval
}
///
/// - Returns:
static func getNowTimeString(dateFormat: String) -> String {
let dateformatter = DateFormatter()
dateformatter.dateFormat = dateFormat
let nowDate = Date.init()
return dateformatter.string(from: nowDate)
}
///
/// - Parameters:
/// - timeStamp:
/// - dateFormat: yyyy-MM-dd HH:mm:ss
/// - Returns:
2024-04-03 20:06:02 +08:00
static func getTimeString(timeStamp: Int64, dateFormat: String) -> String {
2024-02-27 23:34:55 +08:00
let date = Date(timeIntervalSince1970: TimeInterval.init(timeStamp))
let dateformatter = DateFormatter()
dateformatter.dateFormat = dateFormat
return dateformatter.string(from: date)
}
/// Date
/// - Parameters:
/// - timeString:
/// - dateFormat: yyyy-MM-dd HH:mm:ss
/// - Returns: Date
static func getDate(timeString: String, dateFormat: String) -> Date {
let dateformatter = DateFormatter()
dateformatter.dateFormat = dateFormat
let date = dateformatter.date(from: timeString) ?? Date()
return date
}
///
/// - Parameters:
/// - timeString:
/// - dateFormat: yyyy-MM-dd HH:mm:ss
/// - Returns:
static func getTimeStamp(timeString: String, dateFormat: String) -> Int {
let dateformatter = DateFormatter()
dateformatter.dateFormat = dateFormat
let date = self.getDate(timeString: timeString, dateFormat: dateFormat)
return Int(date.timeIntervalSince1970)
}
/// date
/// - Parameters:
/// - timeStamp:
/// - Returns: date
static func getDateWith(timeStamp: Int) -> Date {
let date = Date(timeIntervalSince1970: TimeInterval.init(timeStamp))
return date
}
///
/// - Returns:
func getTime() -> (String, String, String, String, String, String) {
let dateformatter = DateFormatter()
dateformatter.dateFormat = "yyyy"
let y = dateformatter.string(from: self)
dateformatter.dateFormat = "MM"
let mo = dateformatter.string(from: self)
dateformatter.dateFormat = "dd"
let d = dateformatter.string(from: self)
dateformatter.dateFormat = "HH"
let h = dateformatter.string(from: self)
dateformatter.dateFormat = "mm"
let m = dateformatter.string(from: self)
dateformatter.dateFormat = "ss"
let s = dateformatter.string(from: self)
return (y, mo, d, h, m, s)
}
///
/// - Parameter dateFormat: yyyy-MM-dd HH:mm:ss
/// - Returns:
func getStringTime(dateFormat: String) -> String {
let dateformatter = DateFormatter()
dateformatter.dateFormat = dateFormat
return dateformatter.string(from: self)
}
2024-03-22 11:54:23 +08:00
private enum ConstellationType:String {
case , , , , , ,
, , , , ,
}
private static let constellationDict:[ConstellationType :String] = [.: "3.21-4.19",
.: "4.20-5.20",
.: "5.21-6.21",
.: "6.22-7.22",
.: "7.23-8.22",
.: "8.23-9.22",
.: "9.23-10.23",
.: "10.24-11.22",
.: "11.23-12.21",
.: "12.22-1.19",
.: "1.20-2.18",
.: "2.19-3.20"]
/// ->
/// - parameter date:
/// - returns:
public static func getCalculateWithDate(date: Date) -> String? {
let timeInterval = date.timeIntervalSince1970
let OneDay:Double = 86400
let currConstellation = constellationDict.filter {
let timeRange = getTimeRange(date: date, timeRange: $1)
let startTime = timeRange.0
let endTime = timeRange.1 + OneDay
return timeInterval > startTime && timeInterval < endTime
} //
return currConstellation.first?.key.rawValue ?? "摩羯座"
}
/// f.
private static func getTimeRange(date:Date, timeRange: String) -> (TimeInterval, TimeInterval) {
/// f.1
func getCurrYear(date:Date) -> String {
let dm = DateFormatter()
dm.dateFormat = "yyyy."
let currYear = dm.string(from: date)
return currYear
}
/// f.2
func toTimeInterval(dateStr: String) -> TimeInterval? {
let dm = DateFormatter()
dm.dateFormat = "yyyy.MM.dd"
let date = dm.date(from: dateStr)
let interval = date?.timeIntervalSince1970
return interval
}
let timeStrArr = timeRange.components(separatedBy: "-")
let dateYear = getCurrYear(date: date)
let startTimeStr = dateYear + timeStrArr.first!
let endTimeStr = dateYear + timeStrArr.last!
let startTime = toTimeInterval(dateStr: startTimeStr)!
let endTime = toTimeInterval(dateStr: endTimeStr)!
return (startTime, endTime)
}
2024-02-27 23:34:55 +08:00
}