日期Swift示例

日期

Date格式里面存的都是 世界标准时间(格林威治时间) 和北京时差 晚8个小时。
未验证。

//获某天的起始时间也就是:如:2022-05-29 00:00:00
func getTodayStartDate(date: Date) -> Date {
    //开始时间
    var calendar = NSCalendar.current
    calendar.timeZone = NSTimeZone.local
    let dateAtMidnight:Date = calendar.startOfDay(for: date)
    print(dateAtMidnight)
    print("当天开始时间:\(dateAtMidnight)")
    return dateAtMidnight
}


//获取当前时间戳
func getNowTimeInterval() -> TimeInterval {
    let today = Date()// 获取格林威治时间(GMT)/ 标准时间
    print("today = \(today)")// 打印出的时间是GTM时间,比北京时间晚8个小时
    return Date().timeIntervalSince1970
}

//时间戳转Date
func getDateFromTimeInterval(time:TimeInterval) -> Date {
    return Date(timeIntervalSince1970: time)
}

//Date转字符串 yyyy-MM-dd HH:mm:ss,将ugc日期转本地时区
func getDateStrFromDate(date:Date,format:String) -> String {
  // 未指定就是系统当前时区
    let dateformatter = DateFormatter()//自定义日期格式
    dateformatter.dateFormat = format
    return dateformatter.string(from: date)
    
}

//字符串格式转Date yyyy-MM-dd HH:mm:ss
func getDateFromDateStr(dateStr:String,format:String) -> Date {
    let dateformatter = DateFormatter()//自定义日期格式
    //字符串是北京时间则,强转北京时区
    //dateformatter.locale = Locale(identifier: "zh_CN")
    //字符串是本地时间则,转本地时区
    dateformatter.locale = Locale.current
    dateformatter.dateStyle = DateFormatter.Style.medium
    dateformatter.timeStyle = DateFormatter.Style.medium
    dateformatter.dateFormat = format
    let date = dateformatter.date(from: dateStr)
    return date!
    
}

//获取当前属于那一天
func getDay(date:Date) -> Int {
    //将Date转中国
    //let day = Calendar.init(identifier: .republicOfChina).component(.day, from: date)
    //将date转当前时区
    let day = Calendar.current.component(.day, from: date)
    return day
}

//获取当前系统时区
func getTimeZone() -> TimeZone {
    let zone = NSTimeZone.system
    print("zone = \(zone)")
    return zone
}

//判断是否是同一天
let strDate = "userDefaultDate"
func initUserDefaults() {
    let dateToday = Date()
    let calendar = Calendar.current
    let dateToCompare = UserDefaults.standard.object(forKey: strDate) as? Date ?? Date.distantPast
    if calendar.isDateInToday(dateToCompare) {
        print("是同一天")
        return
    } else {
        UserDefaults.standard.set(dateToday, forKey: strDate)
        print("不是同一天")
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值