swift 时间操作类

//
//  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 "刚刚"
            
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值