swift5.0- 時(shí)間戳客扎、日期祟峦、年月日、天數(shù)

時(shí)間戳徙鱼、日期宅楞、年月日、天數(shù)的計(jì)算很常用袱吆,沒(méi)有一個(gè)系統(tǒng)的統(tǒng)計(jì)厌衙,用到的時(shí)候需要到處尋找。使用的時(shí)候記錄下來(lái)绞绒,方便自己也方便別人需要的時(shí)候查看婶希!

獲取當(dāng)前的時(shí)間戳10位
    class func getCurrentTimeInTravael() -> TimeInterval {
        return NSDate().timeIntervalSince1970
    }
獲取當(dāng)前的日期
    class func getCurrentDatePoint() -> String {
        let now = Date()
        let dformatter = DateFormatter()
        dformatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        return dformatter.string(from: now)
    }
獲取明天年月日
 class func getTomorrowDate() -> String {
        let now = Date()
        let dformatter = DateFormatter()
        dformatter.dateFormat = "yyyy年MM月dd日"
        let nextDate:TimeInterval = TimeInterval(24*60*60)
        let sDate = now.addingTimeInterval(nextDate)
        return dformatter.string(from: sDate) 
    }
時(shí)間戳轉(zhuǎn)換為Date類型
class func getDateFromTimeStamp(timeStamp:String) ->Date {
      let interval:TimeInterval = TimeInterval.init(timeStamp)!
      return Date(timeIntervalSince1970: interval)
  }
時(shí)間格式轉(zhuǎn)換成時(shí)間戳
  class func dateStrToTimeInterval(dateStr: String) -> Int  {
        let dateformatter = DateFormatter()
        dateformatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss"
        let date = dateformatter.date(from: dateStr)
        let dateTimeInterval:TimeInterval = date!.timeIntervalSince1970
        return Int(dateTimeInterval)
    }
時(shí)間格式轉(zhuǎn)換為Date類型
  • print(dateformatter.date(from: time)!)不要這樣打印去看date ,看到的跟你輸入的不一樣但是它并不是錯(cuò)誤的蓬衡∮麒荆可以采用下面的方式打印查看 print(dateformatter.string(from: date))
 class func timeStrToDate(time:String) -> Date {
       let dateformatter = DateFormatter()
       dateformatter.dateFormat = "yyyy年MM月dd日"
       return dateformatter.date(from: time)!
   }
獲取當(dāng)前年份和月份和日
class func getCurrentYearMonthDay() -> (Int, Int, Int) {
        let calendar = Calendar.current
        let dateComponets = calendar.dateComponents([Calendar.Component.year,Calendar.Component.month,Calendar.Component.day], from: Date())
        return (dateComponets.year!, dateComponets.month!, dateComponets.day!)
    }
獲取當(dāng)前月的總天數(shù)
    class func getCurentMonthDays() -> Int {
        let calendar = Calendar.current
        let range = calendar.range(of: Calendar.Component.day, in: Calendar.Component.month, for: Date())
        return range!.count
    }
根據(jù)date獲取是周幾
 func getWeedayFromeDate(date: Date) -> String {
        let calendar = Calendar.current
        let dateComponets = calendar.dateComponents([Calendar.Component.year,Calendar.Component.month,Calendar.Component.weekday,Calendar.Component.day], from: date)
        //獲取到今天是周幾 1(星期天) 2(星期一) 3(星期二) 4(星期三) 5(星期四) 6(星期五) 7(星期六)
        let weekDay = dateComponets.weekday
        switch weekDay {
        case 1:
            return "星期天"
        case 2:
           return  "星期一"
        case 3:
            return "星期二"
        case 4:
            return "星期三"
        case 5:
            return "星期四"
        case 6:
            return "星期五"
        case 7:
            return "星期六"
        default:
            return ""
        }
    }
根據(jù)時(shí)間戳與當(dāng)前時(shí)間的比較(類似朋友圈的時(shí)間顯示)
    class func compareCurrntTime(timeStamp:String) -> String {
        //計(jì)算出時(shí)間戳距離現(xiàn)在時(shí)間的一個(gè)秒數(shù)(..s)
        let interval:TimeInterval=TimeInterval(timeStamp)!
        let date = Date (timeIntervalSince1970: interval)
        var timeInterval = date.timeIntervalSinceNow
        //得到的是一個(gè)負(fù)值 (加' - ' 得正以便后面計(jì)算)
        timeInterval = -timeInterval
        //根據(jù)時(shí)間差 做所對(duì)應(yīng)的文字描述 (作為返回文字描述)
        var result:String
            //一分鐘以內(nèi)
        if interval < 60{
            result = "剛剛"
            return result
        } else if Int(timeInterval/60) < 60{
            //一小時(shí)以內(nèi)
            result = String.init(format:"%@分鐘前",String(Int(timeInterval/60)))
            return result
        } else if Int((timeInterval/60)/60) < 24{
            //一天以內(nèi)
            result = String.init(format:"%@小時(shí)前",String(Int((timeInterval/60)/60)))
            return result
        }else{
            //超過(guò)一天的
            let dateformatter = DateFormatter()
            //自定義日期格式
            dateformatter.dateFormat="yyyy年MM月dd日 HH:mm"
            result = dateformatter.string(from: date as Date)
            return result
        }
    }
得到本每周 開(kāi)始 和 結(jié)束的時(shí)間

    class func getCurrentWeekDays() -> (String, String) {
        let now = Date()
        let calendar = Calendar.current
        let dateComponets = calendar.dateComponents([Calendar.Component.year,Calendar.Component.month,Calendar.Component.weekday,Calendar.Component.day], from: now)
        //獲取到今天是周幾 1(星期天) 2(星期一) 3(星期二) 4(星期三) 5(星期四) 6(星期五) 7(星期六)
        let weekDay = dateComponets.weekday
        // 得到幾號(hào)
        let day = dateComponets.day        
        // 計(jì)算當(dāng)前日期和這周的星期一和星期天差的天數(shù)
        var firstDiff = 0
        var lastDiff = 0
        if weekDay == 1 {
            firstDiff = 1
            lastDiff = 0
        } else {
            firstDiff = calendar.firstWeekday - weekDay!+1;
            lastDiff = 9 - weekDay!-1;
        }
        var firstDayComp = calendar.dateComponents([Calendar.Component.year,Calendar.Component.month,Calendar.Component.day], from: now)
        firstDayComp.day = day! + firstDiff
        let firstDayOfWeek = calendar.date(from: firstDayComp)
        var lastDayComp = calendar.dateComponents([Calendar.Component.year,Calendar.Component.month,Calendar.Component.day], from: now)
        lastDayComp.day = day! + lastDiff
        let lastDayOfWeek = calendar.date(from: lastDayComp)
        let formater = DateFormatter()
       formater.dateFormat="yyyy年MM月dd日"
        let startW = formater.string(from: firstDayOfWeek!)
        let endW = formater.string(from: lastDayOfWeek!)
        return (startW, endW)
    }
檢測(cè)日期
  class func checkDate(str: String) -> String {
        let format = DateFormatter()
        if let date = format.date(from: str) {
            if Calendar.current.isDateInToday(date) {
                return "日期是今天"
            } else if Calendar.current.isDateInYesterday(date) {
                return "日期是昨天"
            } else if Calendar.current.isDateInTomorrow(date) {
                return "日期是明天"
            } else if Calendar.current.isDateInWeekend(date) {
                return "日期是周末"
            } else if Calendar.current.isDate(date, inSameDayAs: Date()) {
                return "日期是今天,也就是傳入的和今天的是相同的日期"
            } else {
                return ""
            }
        }
        return ""
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狰晚,一起剝皮案震驚了整個(gè)濱河市筒饰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌壁晒,老刑警劉巖瓷们,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異秒咐,居然都是意外死亡谬晕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門携取,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)攒钳,“玉大人,你說(shuō)我怎么就攤上這事歹茶∠ν妫” “怎么了你弦?”我有些...
    開(kāi)封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)燎孟。 經(jīng)常有香客問(wèn)我禽作,道長(zhǎng),這世上最難降的妖魔是什么揩页? 我笑而不...
    開(kāi)封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任旷偿,我火速辦了婚禮,結(jié)果婚禮上爆侣,老公的妹妹穿的比我還像新娘萍程。我一直安慰自己,他們只是感情好兔仰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布茫负。 她就那樣靜靜地躺著,像睡著了一般乎赴。 火紅的嫁衣襯著肌膚如雪忍法。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天榕吼,我揣著相機(jī)與錄音饿序,去河邊找鬼。 笑死羹蚣,一個(gè)胖子當(dāng)著我的面吹牛原探,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播顽素,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼咽弦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了戈抄?” 一聲冷哼從身側(cè)響起离唬,我...
    開(kāi)封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎划鸽,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體戚哎,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡裸诽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了型凳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丈冬。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖甘畅,靈堂內(nèi)的尸體忽然破棺而出埂蕊,到底是詐尸還是另有隱情往弓,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布蓄氧,位于F島的核電站函似,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏喉童。R本人自食惡果不足惜撇寞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望堂氯。 院中可真熱鬧蔑担,春花似錦、人聲如沸咽白。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)晶框。三九已至恨统,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間三妈,已是汗流浹背畜埋。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留畴蒲,地道東北人悠鞍。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像模燥,于是被迫代替她去往敵國(guó)和親咖祭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353