您的位置:首页 > 移动开发 > Swift

Swift3.0设置微信朋友圈时间显示样式

2016-04-23 23:01 531 查看

把请求下来的时间字符串(requestDateString)转换为NSDate

Swift2.3:
//创建formatter
let formatter = NSDateFormatter()
//设置时间格式
formatter.dateFormat = "EEE MMM d HH:mm:ss Z yyyy"
//设置时间区域
formatter.locale = NSLocale(localeIdentifier: "en")
//转换为字符串
let requestDate = formatter.dateFromString(requestDateString)

Swift3.0:
let requestDateString = "*************"
let formatter = DateFormatter()
formatter.dateFormat = "EEE MMM d HH:mm:ss z yyyy"
formatter.locale = Locale.init(identifier: "en") as Locale!
let requestDate = formatter.date(from: requestDateString)
print(getShowFormat(requestDate: Date.init(timeIntervalSinceNow: -555)))

//输出:
9分钟前


把转换好的NSDate转换成要显示的形式

Swift2.3:
func getShowFormat(requestDate:NSDate) -> String {

//获取当前时间
let calendar = NSCalendar.currentCalendar()
//判断是否是今天
if calendar.isDateInToday(requestDate) {
//获取当前时间和系统时间的差距(单位是秒)
//强制转换为Int
let since = Int(NSDate().timeIntervalSinceDate(requestDate))
//  是否是刚刚
if since < 60 {
return "刚刚"
}
//  是否是多少分钟内
if since < 60 * 60 {
return "\(since/60)分钟前"
}
//  是否是多少小时内
return "\(since / (60 * 60))小时前"
}

//判断是否是昨天
var formatterString = "HH:mm"
if calendar.isDateInYesterday(requestDate) {
formatterString = "昨天" + formatterString
} else {
//判断是否是一年内
formatterString = "MM-dd" + formatterString
//判断是否是更早期
let comps = calendar.components(NSCalendarUnit.Year, fromDate: requestDate, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))

if comps.year >= 1 {
formatterString = "yyyy-" + formatterString
}
}

//按照指定的格式将日期转换为字符串
//创建formatter
let formatter = NSDateFormatter()
//设置时间格式
formatter.dateFormat = formatterString
//设置时间区域
formatter.locale = NSLocale(localeIdentifier: "en")

//格式化
return formatter.stringFromDate(requestDate)
}

Swift3.0:
func getShowFormat(requestDate:Date) -> String {

//获取当前时间
let calendar = Calendar.current
//判断是否是今天
if calendar.isDateInToday(requestDate as Date) {
//获取当前时间和系统时间的差距(单位是秒)
//强制转换为Int
let since = Int(Date().timeIntervalSince(requestDate as Date))
//  是否是刚刚
if since < 60 {
return "刚刚"
}
//  是否是多少分钟内
if since < 60 * 60 {
return "\(since/60)分钟前"
}
//  是否是多少小时内
return "\(since / (60 * 60))小时前"
}

//判断是否是昨天
var formatterString = " HH:mm"
if calendar.isDateInYesterday(requestDate as Date) {
formatterString = "昨天" + formatterString
} else {
//判断是否是一年内
formatterString = "MM-dd" + formatterString
//判断是否是更早期

let comps = calendar.dateComponents([Calendar.Component.year], from: requestDate, to: Date())

if comps.year! >= 1 {
formatterString = "yyyy-" + formatterString
}
}

//按照指定的格式将日期转换为字符串
//创建formatter
let formatter = DateFormatter()
//设置时间格式
formatter.dateFormat = formatterString
//设置时间区域
formatter.locale = NSLocale(localeIdentifier: "en") as Locale!

//格式化
return formatter.string(from: requestDate as Date)
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息