当前位置:网站首页>日期转换 EEE MMM dd HH:mm:ss zzz yyyy
日期转换 EEE MMM dd HH:mm:ss zzz yyyy
2022-07-28 23:52:00 【Hanyang Li】
1. 创建日期转换分类
//
// Date+Extension.swift
//
import Foundation
extension Date{
/// 将格式的字符串转换成日期
static func fromData(string: String) ->Date?{
let df = DateFormatter()
df.locale = Locale(identifier: "en")
df.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
return df.date(from: string)
}
/**
返回当前日期多描述信息
刚刚(一分钟内)
x分钟前(一小时内)
x小时前(当天)
昨天 HH:mm(昨天)
MM-dd HH:mm(一年内)
yyyy-MM-dd HH:mm(更早期)
*/
var dateDescription: String{
//取出当前日历 - 提供了大量的日历相关的操作函数
let calendar = Calendar.current
//处理今天的日期
if calendar.isDateInToday(self) {
let delta = Int(Date().timeIntervalSince(self))
if delta < 60 {
return "刚刚"
}
if delta < 3600{
return "\(delta/60) 分钟前"
}
return "\(delta/3600) 小时前"
}
//非今天的日期
var fmt = " HH:mm"
if calendar.isDateInYesterday(self){
fmt = "昨天" + fmt
}else{
fmt = "MM-dd" + fmt
//直接获取 “年”的数值
let comps = calendar.dateComponents([.year], from: self, to: Date())
if let year = comps.year, year > 0 {
fmt = "yyyy-" + fmt
}
}
//根据格式字符串生成描述字符串
let df = DateFormatter()
df.dateFormat = fmt
df.locale = Locale(identifier: "en")
return df.string(from: self)
}
}2. 测试方法
override func viewDidLoad() {
super.viewDidLoad()
//目标: 特殊格式的字符串
//步骤
//1.建立 ‘日期’对象
//2.根据日期对象,计算显示描述字符
let str = "Mon Jul 25 16:41:43 +0800 2022"
print(Date.fromData(string: "Mon Jul 26 06:41:43 +0800 2022")?.dateDescription)
print(Date.fromData(string: "Mon Jul 26 10:03:01 +0800 2022")?.dateDescription)
print(Date.fromData(string: "Mon Jul 26 10:06:01 +0800 2022")?.dateDescription)
print(Date.fromData(string: "Mon Jul 26 00:00:02 +0800 2022")?.dateDescription)
print(Date.fromData(string: "Mon Jul 25 16:41:43 +0800 2022")?.dateDescription)
print(Date.fromData(string: "Mon Jul 24 16:41:43 +0800 2022")?.dateDescription)
print(Date.fromData(string: "Mon May 24 16:41:43 +0800 2022")?.dateDescription)
print(Date.fromData(string: "Mon May 28 16:41:43 +0800 2021")?.dateDescription)
}3. 输出结果
Optional("3 小时前")
Optional("3 分钟前")
Optional("刚刚")
Optional("10 小时前")
Optional("昨天 16:41")
Optional("07-24 16:41")
Optional("05-24 16:41")
Optional("2021-05-28 16:41")边栏推荐
- Charles -- 从0-1教你如何使用抓包工具
- What opportunities does the London gold real-time market bring?
- 关于ThreadPool的一些注意事项
- QT static compiler (MinGW compilation)
- 将Word中的表格以图片形式复制到微信发送
- Copu Professor Lu Shouqun was invited to give a keynote speech at the open atom global open source summit
- mysql存储过程 实现创建一张表(复制原表的结构新建的表)
- 对接支付宝支付
- 返回*this的成员函数
- 【树莓派】widows电脑如何与树莓派连接
猜你喜欢

状态压缩dp-蒙德里安的梦想

Charles -- teach you how to use the packet capturing tool from 0-1

B- 树 ~

华为发布HarmonyOS 3.0,向“万物互联”再迈一步

Method of converting inline elements to block elements

【AD学习】本次海上航行器大赛画pcb图的历程

【目标检测】YOLOR理论简介+实践测试VisDrone数据集

关于ThreadPool的一些注意事项

Wechat campus bathroom reservation applet graduation design finished product (8) graduation design thesis template

SystemVerilog join and copy operators
随机推荐
[AD learning] the course of PCB drawing in this marine vehicle competition
[web development] basic knowledge of flask framework
Self made | a 16 bit RISC architecture CPU is self-made by hand
电子招标初学者指南
双链表的定义 ~
【刷题笔记】二进制链表转整数
Main thread and daemon thread
Charles -- 从0-1教你如何使用抓包工具
Method of converting inline elements to block elements
【unity】将unity编辑c#配置为vscode
Machine learning | matlab implementation of RBF radial basis function neural network Newrbe parameter setting
Cookie和Session
【AD学习】本次海上航行器大赛画pcb图的历程
Wechat campus bathroom reservation applet graduation design finished product (8) graduation design thesis template
ACM SIGIR 2022 | 美团技术团队精选论文解读
B站“崩溃”始末 2021.07.13 我们是这样崩的(转载)
JWT token related configuration (global configuration identity authentication rewrites authenticate method)
进程和线程知识点总结1
如何给女友讲明白JS的bind模拟实现
Copu Professor Lu Shouqun was invited to give a keynote speech at the open atom global open source summit