美文网首页
swift5.0- 时间戳、日期、年月日、天数

swift5.0- 时间戳、日期、年月日、天数

作者: 31313_iOS | 来源:发表于2019-06-28 18:50 被阅读0次

时间戳、日期、年月日、天数的计算很常用,没有一个系统的统计,用到的时候需要到处寻找。使用的时候记录下来,方便自己也方便别人需要的时候查看!

获取当前的时间戳10位
    class func getCurrentTimeInTravael() -> TimeInterval {
        return NSDate().timeIntervalSince1970
    }
获取当前的日期
    class func getCurrentDatePoint() -> String {
        let now = Date()
        let dformatter = DateFormatter()
        dformatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
        return dformatter.string(from: now)
    }
获取明天年月日
 class func getTomorrowDate() -> String {
        let now = Date()
        let dformatter = DateFormatter()
        dformatter.dateFormat = "yyyy年MM月dd日"
        let nextDate:TimeInterval = TimeInterval(24*60*60)
        let sDate = now.addingTimeInterval(nextDate)
        return dformatter.string(from: sDate) 
    }
时间戳转换为Date类型
class func getDateFromTimeStamp(timeStamp:String) ->Date {
      let interval:TimeInterval = TimeInterval.init(timeStamp)!
      return Date(timeIntervalSince1970: interval)
  }
时间格式转换成时间戳
  class func dateStrToTimeInterval(dateStr: String) -> Int  {
        let dateformatter = DateFormatter()
        dateformatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss"
        let date = dateformatter.date(from: dateStr)
        let dateTimeInterval:TimeInterval = date!.timeIntervalSince1970
        return Int(dateTimeInterval)
    }
时间格式转换为Date类型
  • print(dateformatter.date(from: time)!)不要这样打印去看date ,看到的跟你输入的不一样但是它并不是错误的。可以采用下面的方式打印查看 print(dateformatter.string(from: date))
 class func timeStrToDate(time:String) -> Date {
       let dateformatter = DateFormatter()
       dateformatter.dateFormat = "yyyy年MM月dd日"
       return dateformatter.date(from: time)!
   }
获取当前年份和月份和日
class func getCurrentYearMonthDay() -> (Int, Int, Int) {
        let calendar = Calendar.current
        let dateComponets = calendar.dateComponents([Calendar.Component.year,Calendar.Component.month,Calendar.Component.day], from: Date())
        return (dateComponets.year!, dateComponets.month!, dateComponets.day!)
    }
获取当前月的总天数
    class func getCurentMonthDays() -> Int {
        let calendar = Calendar.current
        let range = calendar.range(of: Calendar.Component.day, in: Calendar.Component.month, for: Date())
        return range!.count
    }
根据date获取是周几
 func getWeedayFromeDate(date: Date) -> String {
        let calendar = Calendar.current
        let dateComponets = calendar.dateComponents([Calendar.Component.year,Calendar.Component.month,Calendar.Component.weekday,Calendar.Component.day], from: date)
        //获取到今天是周几 1(星期天) 2(星期一) 3(星期二) 4(星期三) 5(星期四) 6(星期五) 7(星期六)
        let weekDay = dateComponets.weekday
        switch weekDay {
        case 1:
            return "星期天"
        case 2:
           return  "星期一"
        case 3:
            return "星期二"
        case 4:
            return "星期三"
        case 5:
            return "星期四"
        case 6:
            return "星期五"
        case 7:
            return "星期六"
        default:
            return ""
        }
    }
根据时间戳与当前时间的比较(类似朋友圈的时间显示)
    class func compareCurrntTime(timeStamp:String) -> String {
        //计算出时间戳距离现在时间的一个秒数(..s)
        let interval:TimeInterval=TimeInterval(timeStamp)!
        let date = Date (timeIntervalSince1970: interval)
        var timeInterval = date.timeIntervalSinceNow
        //得到的是一个负值 (加' - ' 得正以便后面计算)
        timeInterval = -timeInterval
        //根据时间差 做所对应的文字描述 (作为返回文字描述)
        var result:String
            //一分钟以内
        if interval < 60{
            result = "刚刚"
            return result
        } else if Int(timeInterval/60) < 60{
            //一小时以内
            result = String.init(format:"%@分钟前",String(Int(timeInterval/60)))
            return result
        } else if Int((timeInterval/60)/60) < 24{
            //一天以内
            result = String.init(format:"%@小时前",String(Int((timeInterval/60)/60)))
            return result
        }else{
            //超过一天的
            let dateformatter = DateFormatter()
            //自定义日期格式
            dateformatter.dateFormat="yyyy年MM月dd日 HH:mm"
            result = dateformatter.string(from: date as Date)
            return result
        }
    }
得到本每周 开始 和 结束的时间

    class func getCurrentWeekDays() -> (String, String) {
        let now = Date()
        let calendar = Calendar.current
        let dateComponets = calendar.dateComponents([Calendar.Component.year,Calendar.Component.month,Calendar.Component.weekday,Calendar.Component.day], from: now)
        //获取到今天是周几 1(星期天) 2(星期一) 3(星期二) 4(星期三) 5(星期四) 6(星期五) 7(星期六)
        let weekDay = dateComponets.weekday
        // 得到几号
        let day = dateComponets.day        
        // 计算当前日期和这周的星期一和星期天差的天数
        var firstDiff = 0
        var lastDiff = 0
        if weekDay == 1 {
            firstDiff = 1
            lastDiff = 0
        } else {
            firstDiff = calendar.firstWeekday - weekDay!+1;
            lastDiff = 9 - weekDay!-1;
        }
        var firstDayComp = calendar.dateComponents([Calendar.Component.year,Calendar.Component.month,Calendar.Component.day], from: now)
        firstDayComp.day = day! + firstDiff
        let firstDayOfWeek = calendar.date(from: firstDayComp)
        var lastDayComp = calendar.dateComponents([Calendar.Component.year,Calendar.Component.month,Calendar.Component.day], from: now)
        lastDayComp.day = day! + lastDiff
        let lastDayOfWeek = calendar.date(from: lastDayComp)
        let formater = DateFormatter()
       formater.dateFormat="yyyy年MM月dd日"
        let startW = formater.string(from: firstDayOfWeek!)
        let endW = formater.string(from: lastDayOfWeek!)
        return (startW, endW)
    }
检测日期
  class func checkDate(str: String) -> String {
        let format = DateFormatter()
        if let date = format.date(from: str) {
            if Calendar.current.isDateInToday(date) {
                return "日期是今天"
            } else if Calendar.current.isDateInYesterday(date) {
                return "日期是昨天"
            } else if Calendar.current.isDateInTomorrow(date) {
                return "日期是明天"
            } else if Calendar.current.isDateInWeekend(date) {
                return "日期是周末"
            } else if Calendar.current.isDate(date, inSameDayAs: Date()) {
                return "日期是今天,也就是传入的和今天的是相同的日期"
            } else {
                return ""
            }
        }
        return ""
    }

相关文章

  • swift5.0- 时间戳、日期、年月日、天数

    时间戳、日期、年月日、天数的计算很常用,没有一个系统的统计,用到的时候需要到处寻找。使用的时候记录下来,方便自己也...

  • 时间常用处理

    时间戳转化为日期 日期转化为时间戳 日期截取年月日time.slice(0, 11)

  • UTC时间与时区时间转换

    描述 时间日期与time stamp转换 参考 C语言实现将时间戳转换为年月日时分秒和将年月日时分秒转换为时间戳 ...

  • linux常用命令笔记

    1.显示日期与时间 date date :显示当前时间戳 date +%Y/%m/%d :显示年月日 date +...

  • JavaScript Date 对象方法总结

    常用 Date 类方法 获取当月天数 通过数组来添加天数 获取当前时间 日期大小比较 js时间戳与日期格式的相互转...

  • JS日期函数

    获取年月日 将时间转成时间戳 时间戳转成时间

  • nodejs计算天数差

    计算天数差,主要是得到两个日期的时间戳即可计算。下面代码展示计算狗狗年龄两个日期的时间戳之差

  • MySQL 日期操作 增减天数、时间转换、时间戳

    MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。sel...

  • jQuery 时间操作

    jQuery 时间操作 获取当前时间 获取当前时间的年月日时分秒 获取当前日期的前一天 4.日期字符串转换时间戳

  • Nodejs计算日期天数差

    计算天数差,主要是得到两个日期的时间戳即可计算。 下面代码展示计算狗狗年龄 //两个日期的时间戳之差 var bi...

网友评论

      本文标题:swift5.0- 时间戳、日期、年月日、天数

      本文链接:https://www.haomeiwen.com/subject/khiecctx.html