【发布时间】:2018-01-28 09:27:17
【问题描述】:
我的服务器调用为我提供了 JSON 数据,其中包含每条数据的日期时间,我想计算从现在到那时经过的时间并将其加载到我的数据结构中。我现在这样做的方式需要很长时间,我应该使用不同的设计实践吗?以下是我现在正在使用的功能
func dateDiff(_ dateStr:String) -> String {
var timeAgo = "10m"
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd' 'HH:mm:ss"
formatter.timeZone = NSTimeZone(name: "AST") as! TimeZone
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd' 'HH:mm:ss"
dateFormatter.timeZone = NSTimeZone(name: "AST") as! TimeZone
let now = formatter.string(from: Date())
if let date = formatter.date(from: dateStr){
if let nowDate = formatter.date(from: now){
let components = Calendar.current.dateComponents([.day,.hour,.minute,.second], from: date, to: nowDate)
let sec = components.second
let min = components.minute
let hours = components.hour
let days = components.day
if (sec! > 0){
if let secc = sec {
timeAgo = "\(secc)s"
}
}
if (min! > 0){
if let minn = min {
timeAgo = "\(minn)m"
} }
if(hours! > 0){
if let hourss = hours {
timeAgo = "\(hourss)h"
}
}
if(days! > 0){
if let dayss = days {
timeAgo = "\(dayss)d"
}
}
}
}
return timeAgo
}
【问题讨论】:
-
formatter和dateFormatter的区别在哪里?后者似乎未使用。为什么要将Date()转换为字符串然后再转换回Date?
标签: swift datetime nsdate elapsedtime