Ios Swift:将开始和结束日期格式化为单个字符串
我有两个字符串格式的日期:Ios Swift:将开始和结束日期格式化为单个字符串,ios,swift,nsdateformatter,date-formatting,Ios,Swift,Nsdateformatter,Date Formatting,我有两个字符串格式的日期: 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的原生日期格式化程序来实现这一点 有没有一个流行的豆荚可以帮上忙
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的原生日期格式化程序来实现这一点
有没有一个流行的豆荚可以帮上忙
完成此格式设置的最佳实践是什么?以下是我的答案:
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)
}
}
为此,我将研究DateComponents
类,请参阅。使用DateIntervalFormatter
。但是首先从字符串中创建两个Date
实例。一个DateIntervalFormatter
和timeStyle=.long
和timeStyle=.none
应该可以让你非常接近你想要的。这并没有那么有用,因为toDate(withFormat:)
不是标准方法。我已添加函数toDate(withFormat:String)