Swift:将开始和结束日期格式化为单个字符串
Posted
技术标签:
【中文标题】Swift:将开始和结束日期格式化为单个字符串【英文标题】:Swift: Format a a start and end date into a single string 【发布时间】:2018-06-12 20:24:12 【问题描述】:我有这两个字符串格式的日期:
let startDate = "2018-06-14"
let endDate = "2018-06-17"
我想将它们一起格式化:
2018 年 6 月 14-17 日
但是,如果开始日期和结束日期在不同月份,则应采用如下格式:
2018 年 6 月 29 日 - 7 月 1 日
如果开始日期和结束日期在不同年份,则应采用如下格式:
2018 年 12 月 29 日 - 2019 年 1 月 1 日
有没有使用 Swift 原生的 DateFormatter
的简单方法?
有没有流行的 pod 可以帮助解决这个问题?
完成这种格式化的最佳做法是什么?
【问题讨论】:
我会为此查看DateComponents
class,请参阅Apple documentation。
使用DateIntervalFormatter
。但首先从您的字符串中创建两个 Date
实例。
DateIntervalFormatter
与 dateStyle = .long
和 timeStyle = .none
应该让您非常接近您想要的。
【参考方案1】:
这是我的答案:
if let startDate = startDateString.toDate(withFormat: "yyyy-MM-dd"),
let endDate = endDateString.toDate(withFormat: "yyyy-MM-dd")
let formatter = DateIntervalFormatter()
formatter.dateStyle = .long
formatter.timeStyle = .none
dateLabel.text = formatter.string(from: startDate, to: endDate)
还有这个扩展:
extension String
func toDate(withFormat format: String) -> Date?
let formatter = DateFormatter()
formatter.dateFormat = format
formatter.locale = Locale(identifier: "en_US_POSIX")
return formatter.date(from: self)
【讨论】:
这并不像它可能的那样有用,因为toDate(withFormat:)
不是标准方法。
我已经添加了函数 toDate(withFormat format: String)以上是关于Swift:将开始和结束日期格式化为单个字符串的主要内容,如果未能解决你的问题,请参考以下文章