时间的处理,在开发中经常遇见的到,我们洗完处理成年月日时分秒
这里我写了一个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)
}
}