swift 时间操作类
2014-12-04 12:08
232 查看
// // 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_将UIDatePicker获取到的时间传到下一个页面出现相差几个小时的问题
- [Swift 工作tips] 之 使用Alamofire做网络请求时设置请求超时(timeout)时间
- Swift 时间戳转化成 星期几(本人亲测)
- swift编译时间对比
- C# 时间操作类
- Swift - 延长启动图片的显示时间(LaunchImage)
- Swift中的时间戳工具TimeStampTools
- 有段时间没有更新博客了,最近比较忙,今天和大家分享一个使用Swift实现的新特性功能吧
- swift 时间戳转为date (unix)
- Swift -欢迎界面1页, 延长启动图片的显示时间(LaunchImage)
- iOS开发—Swift时间戳转换方法
- 开始抽时间学习swift
- SWIFT和Android中计算时间差
- 一个ASP的数据库操作类,意图就是让新手也能写出规范的代码,节少时间。
- Swift -欢迎界面1页, 延长启动图片的显示时间(LaunchImage)
- Swift - 使用AVPlayer制作一个音乐播放器1(带播放时间和播放进度)
- C#时间操作类分享
- Swift - 歌曲播放样例(附带播放时间和播放进度)
- Swift3 时间戳转换成整型字符串 Double value cannot be converted to Int because the result would be greater than
- 发现意外之美 - SwiftyJSON 源码学习 | 咖啡时间