时间戳、日期、年月日、天数的计算很常用,没有一个系统的统计,用到的时候需要到处寻找。使用的时候记录下来,方便自己也方便别人需要的时候查看!
获取当前的时间戳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 ""
}