時間的處理,在開發中經常遇見的到,我們洗完處理成年月日時分秒
這裏我寫了一個Date的分類用於處理時間
//使用非常的的方便,只需要傳入時間幾個轉換
//只需傳入型如下面的時間樣式就行
let creatDate = NSDate.dataWithStr(time: "Sat May 18 16:00:28 +0800 2018")
label.text = creatDate.descDate
//Date分類代碼如下
//
// NSDate+category.swift
// CQWeiBo
//
// Created by 陳強 on 2018/5/16.
// Copyright © 2018年 陳強. All rights reserved.
//
import UIKit
extension NSDate{
class func dataWithStr(time:String)->NSDate{
let formatter = DateFormatter()
//轉換時間格式
formatter.dateFormat = "EEE MMM d HH:mm:ss Z yyyy"
formatter.locale = NSLocale(localeIdentifier: "en") as Locale?
//轉換字符串,轉換好的時間去除時區的時間
let creatDate = formatter.date(from: time)!
return creatDate as NSDate
}
var descDate:String?{
let calendear = Calendar.current
//判斷是否是今天
if calendear.isDateInToday(self as Date) {
let since = Int(NSDate().timeIntervalSince(self as Date))
//1.1是否是剛剛
if since < 60 {
return "剛剛"
}
//1.2多少分鐘以前
if since < 60 * 60{
return "\(since / 60)分鐘前"
}
//1.3多少小時以前
return "\(since / (60 * 60))小時前"
}
//2.判斷是否是昨天
var formatterStr = "HH:mm"
if calendear.isDateInYesterday(self as Date) {
formatterStr = "昨天: " + formatterStr
}else
{
//處理一年以內
formatterStr = "MM-dd " + formatterStr
//處理更早時間
let comps = calendear.dateComponents([.year,.month,.day], from: self as Date, to: Date())
print(comps)
//按照指定的格式時間轉換爲字符串
if comps.year! >= 1{
formatterStr = "yyyy-" + formatterStr
}
}
//創建formatter
let formatter = DateFormatter()
//設置時間的格式
formatter.dateFormat = formatterStr
//設置時間的區域(真機必須設置,否則可能不能轉換成功)
formatter.locale = Locale(identifier: "en")
return formatter.string(from: self as Date)
}
}