Files
2024-04-03 20:06:02 +08:00

182 lines
6.6 KiB
Swift
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// Date+.swift
// yinmeng-ios
//
// Created by yinmeng on 2024/2/27.
//
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:
static func getTimeString(timeStamp: Int64, dateFormat: String) -> String {
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)
}
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)
}
}