使用各种格式将时间戳转换为日期Swift iOS
码:-
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,我收到它显示的格式为"dd-MMM-yyyy hh:mm a"
。但我想显示日期,就像日期是今天它将显示: Today 04:55 PM
,如果日期是昨天,那么我将显示如下: Yesterday 5 PM
,如果在那之前它应该显示,因为我从JSON检索。 我搜索了各种链接但找不到答案。有人可以帮我。谢谢。
从日历对象开始,如果日期是今天或昨天,您可以获得。 基于此,您可以根据需要设置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)
如果您有任何意见,请告诉我。
谢谢。
使用以下代码
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" }
如果您可以在没有自定义日期格式的情况下执行此操作,则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() ... }
- 适用于iOS的“ Meitu”应用程序中有关Analytics Collection的技术信息
- 当我尝试login注册用户并通过parsing启用推送通知时,我的应用崩溃
- 在iOS中测量/计算距离
- 为什么在UI Automation工具中看到“尝试运行脚本时发生错误”?
- 当应用程序被用户终止时重新连接蓝牙设备
- iOS可点击的单词(UILabel或UIbutton的)
- 如何获得两个NSDateComponents之间的NSDateComponents?
- XCode 4.5给我没有find“SenTestingKit / SenTestKit.h”文件,但对4.4.1
- XCode – 架构armv7 arm64的未定义符号