//
// JDateUtil.swift
// Meetr
//
// Created by yktx on 14/12/4.
// Copyright (c) 2014年 yktx.com.Yan. All rights reserved.
//
import Foundation
public extension NSDate{
// 现在的 unix 时间戳
var unixNowTime:NSTimeInterval {return NSDate().timeIntervalSince1970}
// 现在的字符传 格式
var stringNowTime:NSString {return dateToString(NSDate(), dateFormat: nil)}
// 现在的 时间格式
var dateNowTime:NSDate {return NSDate()}
//今天的时间格式
var dateTodayTime:NSDate{return stringToDate(stringTodayTime, dateFormat: "yyyy年MM月dd日")}
//今天的时间戳格式
var unixTodayTime:NSTimeInterval{return dateToUnix(dateTodayTime)}
//今天的字符串格式
var stringTodayTime:NSString{return dateToString(dateNowTime, dateFormat: "yyyy年MM月dd日")}
// 时间戳 转 时间
func unixToDate(unixTime:NSTimeInterval) -> NSDate{
return NSDate(timeIntervalSince1970: unixTime)
}
// 时间 转 时间戳
func dateToUnix(dateTime:NSDate) -> NSTimeInterval{
return dateTime.timeIntervalSince1970
}
// 时间 转 时间戳
func dateToString(dateTime:NSDate,dateFormat:NSString?) -> NSString{
var formatter = NSDateFormatter() //新建一个时间格式化工具
var dateForma = ""
if(dateFormat == nil){dateForma = "yyyy年MM月dd日 HH:mm"}
formatter.dateFormat = dateFormat == nil ? dateForma : dateFormat
return formatter.stringFromDate(dateTime)
}
// 时间戳 转 时间字符串
func unixToString(unixTime:NSTimeInterval,dateFormat:NSString?) -> NSString{
var date = unixToDate(unixTime)
var formatter = NSDateFormatter() //新建一个时间格式化工具
var dateForma = ""
if(dateFormat == nil){dateForma = "yyyy年MM月dd日 HH:mm"}
formatter.dateFormat = dateFormat == nil ? dateForma : dateFormat
return formatter.stringFromDate(date)
}
// 字符串 转 时间
func stringToDate(stringTime:NSString,dateFormat:NSString?) -> NSDate{
var outputFormatter = NSDateFormatter()
var dateForma = ""
if(dateFormat == nil){dateForma = "yyyy年MM月dd日 HH:mm"}
outputFormatter.dateFormat = dateFormat == nil ? dateForma : dateFormat
return outputFormatter.dateFromString(stringTime)!
}
// 字符串 转 时间戳
func stringToUnix(stringTime:NSString) -> NSTimeInterval{
return dateToUnix(stringToDate(stringTime, dateFormat: nil))
}
//调整日期
func adjustDate(date:NSDate,intervalDay:NSInteger) -> NSDate{
var datTime = 3600 * 24
var timeSS = intervalDay * datTime
return date.dateByAddingTimeInterval(Double(timeSS))
}
func timeStdate(intiDate:NSDate) ->NSString{//这个方法有错误,希望指正。这是算时间间隔的,但是对于字符串的截取真心不会
var unixStringTime = "\(intiDate.timeIntervalSince1970)" //把传入的时间转换成时间戳格式
var timeSp = unixStringTime.substringToIndex(advance(unixStringTime.startIndex, 10)) as NSString //截取前10个字符
var StringTime:NSString? //设置一个字符串事件类型那个的字段
var nowDate = NSDate() //获取当前的时间
var seconds = nowDate.timeIntervalSince1970 //获取当前时间的unix时间戳格式
var timeDistance:Double = seconds - timeSp.doubleValue //现在的时间 和 之前的时间 时间差
var aHourTime:Double = 60 * 60 // 每一个小时有多少秒
var time = timeSp.doubleValue //将字符串转换成时间戳
var detaildate = NSDate(timeIntervalSince1970: time) //通过时间戳转换为 时间格式
var formatter = NSDateFormatter() //新建一个时间格式化工具
formatter.dateFormat = "yyyy年MM月dd日 HH:mm" //设置工具格式化格式
var ayear = formatter.stringFromDate(nowDate)
var year = ayear.substringToIndex(advance(ayear.startIndex, 4))
var current = formatter.stringFromDate(detaildate)
var today = stringTodayTime
var yesterday = adjustDate(dateTodayTime, intervalDay: -1)
var range = NSRange(location: 0,length: 11)
var isYestoday = current.substringToIndex(advance(unixStringTime.startIndex, 11))
if(timeDistance >= aHourTime){
var result = current.substringFromIndex(advance(current.startIndex, 12))
if(isYestoday == today){
var range = Range<String.Index>(start: advance(current.startIndex, 11),end: advance(current.startIndex, 2))
// var result = current.substringFromIndex(advance(current.startIndex, 12))
if((current.substringWithRange(range) as NSString).doubleValue > 12){
return "上午\(result)"
}else{
return "下午\(result)"
}
}else if(isYestoday == yesterday){
return "下午\(result)"
}else{
// if ([current hasPrefix:year]) {//今年
// NSString *finalTime=[NSString stringWithFormat:@"%@",[current substringFromIndex:5]];
// return finalTime;
// }else{
// return [[formatter stringFromDate:detaildate] substringToIndex:11];
// }
if(current.hasPrefix("year")){
var name = current.substringFromIndex(advance(current.startIndex,5))
return name
}else{
var name = dateToString(detaildate, dateFormat: nil) as NSString
return current.substringFromIndex(advance(current.startIndex, 11))
}
}
}else if(timeDistance >= 60){
var minutes = timeDistance / 60
return "\(minutes)分钟前"
}else{
return "刚刚"
}
}
}
swift 时间操作类
最新推荐文章于 2021-09-03 21:13:35 发布