使用 NSDateIntervalFormatterStyle 我可以输出如下日期范围:
是否有更好的方法(除手动处理此输出外)输出漂亮的日期范围,如:
使用如此长的 mediumstyle 会占用很多屏幕。
答案 0 :(得分:1)
尝试为dateTemplate
类的实例设置NSDateIntervalFormatter
属性,例如如下:
let formatter = NSDateIntervalFormatter()
formatter.dateTemplate = "dd/MM"
print(formatter.stringFromDate(date1, toDate: date2))
这将从日期间隔生成一个字符串,如下所示:5/1 - 5/7
答案 1 :(得分:0)
(目前)NSDateIntervalFormatter
不支持自定义日期格式。但是如果您的日期差异很小(即没有时间,总是在不同的日期,年份无关紧要),您可以轻松创建自己的子类。
e.g:
class DateIntervalFormatter: NSObject {
lazy var dateFormatter: NSDateFormatter = {
let df = NSDateFormatter()
df.dateFormat = NSDateFormatter.dateFormatFromTemplate("MMM dd", options: 0, locale: nil)
return df
}()
func stringFromDate(fromDate: NSDate, toDate: NSDate) -> String {
let fromStr = dateFormatter.stringFromDate(fromDate)
let toStr = dateFormatter.stringFromDate(toDate)
return "\(fromStr) – \(toStr)"
}
}
使用此测试代码生成Jun 30 – Jul 11
:
let date1 = NSCalendar.currentCalendar().dateWithEra(1, year: 2015, month: 6, day: 30, hour: 0, minute: 0, second: 0, nanosecond: 0)!
let date2 = NSCalendar.currentCalendar().dateWithEra(1, year: 2015, month: 7, day: 11, hour: 0, minute: 0, second: 0, nanosecond: 0)!
let customFormatter = DateIntervalFormatter()
let string = customFormatter.stringFromDate(date1, toDate: date2)