加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[swift3.0]时间分类,一键搞定

发布时间:2020-12-14 06:39:42 所属栏目:百科 来源:网络整理
导读:贡献作者 -【XJDomain】 博客XJ: https://my.oschina.net/shengbingli/blog GitHub : https://github.com/lishengbing/XJQRCodeToolDemo 时间的分类:Date分类 //// Date-extension.swift// swift-时间处理拓展//// Created by 李胜兵 on 16/10/25.// Copyri

贡献作者 -【XJDomain】
博客XJ: https://my.oschina.net/shengbingli/blog
GitHub: https://github.com/lishengbing/XJQRCodeToolDemo

时间的分类:Date分类

//
//  Date-extension.swift
//  swift-时间处理拓展
//
//  Created by 李胜兵 on 16/10/25.
//  Copyright ? 2015年 付公司. All rights reserved.
//

import Foundation

extension Date {
    static func createDateStrint(createAtStr : String) -> String {
        // 1.创建时间格式化对象
        let fmt = DateFormatter()
        fmt.dateFormat = "EEE MM dd HH:mm:ss Z yyyy"
        fmt.locale = Locale(identifier: "en")
        
        // 2.将字符串时间转化成NSDate类型
        guard let createDate =  fmt.date(from: createAtStr) else { return "" }
        
        // 3.创建当前时间
        /*
         2016-10-24 17:27:45 +0000
         2016-10-25 06:44:29 +0000 + 8小时才是当前时间,但是我们正好都是+0000,所以不需要转化为东八区
         */
        let nowDate = Date()
        
        // 4.计算创建时间和当前时间的时间差
        let interval = Int(nowDate.timeIntervalSince(createDate))
        
        // 5.根据时间差判断不同的显示
        // 5.1小于60秒,显示“刚刚”
        if interval < 60 {
            return "刚刚"
        }
        
         // 5.2小于1小时内,显示多少分钟:59分钟前
        if interval < 60 * 60 {
            return "(interval / 60)分钟前"
        }
        
        // 5.3小于1天,显示 11小时前
        if interval < 60 * 60 * 24 {
            return "(interval / (60 * 60))小时前"
        }
        
        // 5.4处理昨天的数据:昨天 12:23
        // 创建日历对象
        let calender =  Calendar.current
        if calender.isDateInYesterday(createDate) {
            fmt.dateFormat = "昨天 HH:mm"
            let timeStr = fmt.string(from: createDate)
            return timeStr
        }
        
        // http://nshipster.com/nsdatecomponents/
        // 5.5处理一年内时间:02-12 12:23
        let cmpt =  calender.dateComponents([.year],from: createDate,to: nowDate)
        if cmpt.year! < 1 {
            fmt.dateFormat = "MM-dd HH:mm"
            let timeStr = fmt.string(from: createDate)
            return timeStr
        }
        
        // 5.6超过1年的时间:2014-02-12 13:22
        fmt.dateFormat = "yyyy:MM:dd HH:mm"
        let timeStr = fmt.string(from: createDate)
        return timeStr
    }
}

外面调用:

let createAtStr = "Tue Oct 23 12:59:30 +0800 2014"
let timeStr = Date.createDateStrint(createAtStr: createAtStr)
print(timeStr)

打印如下:

2014:10:23 12:59

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读