Swift - 年月日时分秒...的唯一性判断
2016-08-25 本文已影响179人
小黑Swift
本来想随便写个判断当日方法而已,谁知道越写越多,后来干脆顺便封装了年月日时分秒的唯一性判断,估计大家在项目有时候也会用到,比较判断APP是否今天已经启动,决定提示用户什么或者弹出广告之类。
实现原理也比较简单,根据系统NSUserDefaults单例来存取时间数据来判断
大家可以根据这个来扩展下,判断距离上次使用时长或者实现其他功能等。
//
// Unique.swift
// 逗牛
//
// Created by mac on 16/8/24.
// Copyright © 2016年 mac. All rights reserved.
//
import Foundation
enum Unique {
case year
case month
case day
case hour
case min
case seconds
var isOnly: Bool {
let defults = NSUserDefaults.standardUserDefaults()
guard let currUnique = defults.objectForKey(String(self)) as? String where currUnique == self.onlySnail else {
//不存在则创建 -> 存在则判断 是否为今天 -> 否则 记录今天
defults.setObject(self.onlySnail, forKey: String(self))
defults.synchronize()
return false
}
return true
}
private var onlySnail: String {
let now = NSDate() //获取当前时间
let dformatter = NSDateFormatter() //创建一个日期格式器
switch self {
case .year:
dformatter.dateFormat = "yyyy年"
case .month:
dformatter.dateFormat = "yyyy年MM月"
case day:
dformatter.dateFormat = "yyyy年MM月dd日"
case hour:
dformatter.dateFormat = "yyyy年MM月dd日 HH"
case min:
dformatter.dateFormat = "yyyy年MM月dd日 HH:mm"
case seconds:
dformatter.dateFormat = "yyyy年MM月dd日 HH:mm:ss"
}
return dformatter.stringFromDate(now)
}
}
使用:在需要使用的地方直接判断即可
if Unique.year.isOnly == true {
print("别急,今年很快就过去了")
}
if Unique.month.isOnly == true {
print("这个月,你已经不能在过去了")
}
if Unique.day.isOnly == true {
print("今天已经领取了(⊙o⊙)哦")
}
if Unique.hour.isOnly == true {
print("这小时还没有过去噢")
}
if Unique.min.isOnly == true {
print("这分钟很快就过去了,亲")
}
if Unique.seconds.isOnly == true {
print("秒杀你的节奏")
}