我有这个代码,它用这种格式给出了今天的日期M/dd/yy
let dateFormater = NSDateFormatter()
dateFormater.dateFormat = "M/dd/yy"
let todayDate = dateFormater.stringFromDate(NSDate())
除了第二天的约会,我怎么能得到同样的东西?
首先,在本例中,您将获得所需日期的NSDate(从现在起一天就是明天):
var oneDayfromNow: Date? {
Calendar.current.date(byAdding: .day, value: 1, to: Date())
}
print(oneDayfromNow)
然后将其转换为字符串格式(您的情况为M/dd/yy):
if let oneDayfromNow {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "M/dd/yy"
let str = dateFormatter.string(from: oneDayfromNow)
print(str)
}
这有点复杂,但这都是您需要了解的内容。
为什么困难:你会认为你可以只取NSDate(timeIntervalSinceNow:24*60*60),再加一天。但当你打开夏令时时,那么晚上11:30加上24小时就是两天后的凌晨00:30。当夏令时关闭时,那么凌晨00:30加上24小时可以是同一天的11:30。
因此,您需要创建一个NSCalendar对象,将NSDate()转换为组件,将一天添加到组件,转换回NSDate(所有这些都会在第二天为您提供相同的时间,处理所有特殊情况),然后像现在一样格式化结果。
我最终使用了这段代码来修复它:let dateFormater=NSDateFormatter()
dateFormater.dateFormat = "M/dd/yy"
let todayDate = dateFormater.stringFromDate(NSDate().dateByAddingTimeInterval(24 * 60 * 60))