将时间戳转换为各种格式的日期 Swift
Convert Timestamp to Date with various formats Swift
代码:-
let addedTime = dictMessage?.object(forKey: "added_time") as? String
let timeinterval : TimeInterval = (addedTime as NSString).doubleValu
let dateFromServer = NSDate(timeIntervalSince1970:timeinterval)
let dateFormater : DateFormatter = DateFormatter()
dateFormater.dateFormat = "dd-MMM-yyyy hh:mm a"
cellDetailsShop.lblTimeShop?.text = dateFormater.string(from: dateFromServer as Date)
我有一个 json,从 json 我得到 Timestamp
,我已经将其转换为 Date.Date,我收到的它以 [=13] 格式显示=]。但我想显示日期,如果日期是今天,那么它会显示:Today 04:55 PM
,如果日期是昨天,那么我会显示:Yesterday 5 PM
,如果在那之前,它应该显示因为我正在从 JSON 检索。我搜索了各种链接,但找不到 answer.Could 提前有人帮助 me.Thanks。
使用以下代码
func relativeDate(for date:Date) -> String {
let components = Calendar.current.dateComponents([.day, .year, .month, .weekOfYear], from: date, to: Date())
if let year = components.year, year == 1{
return "\(year) year ago"
}
if let year = components.year, year > 1{
return "\(year) years ago"
}
if let month = components.month, month == 1{
return "\(month) month ago"
}
if let month = components.month, month > 1{
return "\(month) months ago"
}
if let week = components.weekOfYear, week == 1{
return "\(week) week ago"
}
if let week = components.weekOfYear, week > 1{
return "\(week) weeks ago"
}
if let day = components.day{
if day > 1{
return "\(day) days ago"
}else{
"Yesterday"
}
}
return "Today"
}
如果日期是今天还是昨天,您可以从 Calendar 对象中获取。
在此基础上,您可以根据需要设置 String。
我已经创建了一个您需要的示例。
下面是代码。
var yesterdayStr = "17-Jan-2018 10:23 AM"
var todayStr = "18-Jan-2018 10:23 AM"
var tomorrowStr = "19-Jan-2018 10:23 AM"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MMM-yyyy hh:mm a"
let yesterDaydate = dateFormatter.date(from: yesterdayStr)
let todayDate = dateFormatter.date(from: todayStr)
let tomorrowDate = dateFormatter.date(from: tomorrowStr)
let anotherDateFormatter = DateFormatter()
anotherDateFormatter.dateFormat = "hh:mm a"
if Calendar.current.isDateInYesterday(yesterDaydate!)
{
let yesterdayDisplayString = "Yesterday, " + anotherDateFormatter.string(from: yesterDaydate!)
}
if Calendar.current.isDateInToday(todayDate!) {
let todayDisplayString = "Today, " + anotherDateFormatter.string(from: todayDate!)
}
if Calendar.current.isDateInToday(tomorrowDate!) {
}
else {
let anotherDisplayString = anotherDateFormatter.string(from: tomorrowDate!)
}
这是输出,
你可以这样做。
let addedTime = dictMessage?.object(forKey: "added_time") as? String
let timeinterval : TimeInterval = (addedTime as NSString).doubleValue
let dateFromServer = NSDate(timeIntervalSince1970:timeinterval)
let dateFormater : DateFormatter = DateFormatter()
if Calendar.current.isDateInToday(dateFromServer) {
dateFormater.dateFormat = "'Today' hh:mm a"
}
else if Calendar.current.isDateInYesterday(dateFromServer) {
dateFormater.dateFormat = "'Yesterday' hh:mm a"
}
else {
dateFormater.dateFormat = "dd-MMM-yyyy hh:mm a"
}
cellDetailsShop.lblTimeShop?.text = dateFormater.string(from: dateFromServer as Date)
如果您有任何意见,请告诉我。
谢谢。
如果您可以在没有自定义日期格式的情况下做到这一点 DateFormatter
提供本地化的相对格式。日期格式考虑了系统偏好设置中的设置。
let dateFromServer = Date(timeIntervalSinceNow: -100000)
let dateFormatter = DateFormatter()
dateFormatter.doesRelativeDateFormatting = true
dateFormatter.timeStyle = .short
dateFormatter.dateStyle = .short
let string = dateFormatter.string(from: dateFromServer)
请不要在 Swift 中使用 Foundation NSString
和 NSDate
,请使用原生结构
if let addedTime = dictMessage?["added_time"] as? String,
let timeinterval = TimeInterval(addedTime) {
let dateFromServer = Date(timeIntervalSince1970:timeinterval)
let dateFormater = DateFormatter()
...
}
代码:-
let addedTime = dictMessage?.object(forKey: "added_time") as? String
let timeinterval : TimeInterval = (addedTime as NSString).doubleValu
let dateFromServer = NSDate(timeIntervalSince1970:timeinterval)
let dateFormater : DateFormatter = DateFormatter()
dateFormater.dateFormat = "dd-MMM-yyyy hh:mm a"
cellDetailsShop.lblTimeShop?.text = dateFormater.string(from: dateFromServer as Date)
我有一个 json,从 json 我得到 Timestamp
,我已经将其转换为 Date.Date,我收到的它以 [=13] 格式显示=]。但我想显示日期,如果日期是今天,那么它会显示:Today 04:55 PM
,如果日期是昨天,那么我会显示:Yesterday 5 PM
,如果在那之前,它应该显示因为我正在从 JSON 检索。我搜索了各种链接,但找不到 answer.Could 提前有人帮助 me.Thanks。
使用以下代码
func relativeDate(for date:Date) -> String {
let components = Calendar.current.dateComponents([.day, .year, .month, .weekOfYear], from: date, to: Date())
if let year = components.year, year == 1{
return "\(year) year ago"
}
if let year = components.year, year > 1{
return "\(year) years ago"
}
if let month = components.month, month == 1{
return "\(month) month ago"
}
if let month = components.month, month > 1{
return "\(month) months ago"
}
if let week = components.weekOfYear, week == 1{
return "\(week) week ago"
}
if let week = components.weekOfYear, week > 1{
return "\(week) weeks ago"
}
if let day = components.day{
if day > 1{
return "\(day) days ago"
}else{
"Yesterday"
}
}
return "Today"
}
如果日期是今天还是昨天,您可以从 Calendar 对象中获取。 在此基础上,您可以根据需要设置 String。 我已经创建了一个您需要的示例。 下面是代码。
var yesterdayStr = "17-Jan-2018 10:23 AM"
var todayStr = "18-Jan-2018 10:23 AM"
var tomorrowStr = "19-Jan-2018 10:23 AM"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MMM-yyyy hh:mm a"
let yesterDaydate = dateFormatter.date(from: yesterdayStr)
let todayDate = dateFormatter.date(from: todayStr)
let tomorrowDate = dateFormatter.date(from: tomorrowStr)
let anotherDateFormatter = DateFormatter()
anotherDateFormatter.dateFormat = "hh:mm a"
if Calendar.current.isDateInYesterday(yesterDaydate!)
{
let yesterdayDisplayString = "Yesterday, " + anotherDateFormatter.string(from: yesterDaydate!)
}
if Calendar.current.isDateInToday(todayDate!) {
let todayDisplayString = "Today, " + anotherDateFormatter.string(from: todayDate!)
}
if Calendar.current.isDateInToday(tomorrowDate!) {
}
else {
let anotherDisplayString = anotherDateFormatter.string(from: tomorrowDate!)
}
这是输出,
你可以这样做。
let addedTime = dictMessage?.object(forKey: "added_time") as? String
let timeinterval : TimeInterval = (addedTime as NSString).doubleValue
let dateFromServer = NSDate(timeIntervalSince1970:timeinterval)
let dateFormater : DateFormatter = DateFormatter()
if Calendar.current.isDateInToday(dateFromServer) {
dateFormater.dateFormat = "'Today' hh:mm a"
}
else if Calendar.current.isDateInYesterday(dateFromServer) {
dateFormater.dateFormat = "'Yesterday' hh:mm a"
}
else {
dateFormater.dateFormat = "dd-MMM-yyyy hh:mm a"
}
cellDetailsShop.lblTimeShop?.text = dateFormater.string(from: dateFromServer as Date)
如果您有任何意见,请告诉我。
谢谢。
如果您可以在没有自定义日期格式的情况下做到这一点 DateFormatter
提供本地化的相对格式。日期格式考虑了系统偏好设置中的设置。
let dateFromServer = Date(timeIntervalSinceNow: -100000)
let dateFormatter = DateFormatter()
dateFormatter.doesRelativeDateFormatting = true
dateFormatter.timeStyle = .short
dateFormatter.dateStyle = .short
let string = dateFormatter.string(from: dateFromServer)
请不要在 Swift 中使用 Foundation NSString
和 NSDate
,请使用原生结构
if let addedTime = dictMessage?["added_time"] as? String,
let timeinterval = TimeInterval(addedTime) {
let dateFromServer = Date(timeIntervalSince1970:timeinterval)
let dateFormater = DateFormatter()
...
}