ios 如何快速从当前日期获得接下来的 10 天
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/28875356/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to get next 10 days from current date in swift
提问by user3823935
I have dateformat string like this "2015-03-09".How do i get next 10 days date from current date?any help will be appreciated.thanks in advance
我有这样的日期格式字符串“2015-03-09”。如何从当前日期获得下一个 10 天的日期?任何帮助将不胜感激。提前谢谢
回答by vtcajones
For a purely Swift 3 solution:
对于纯 Swift 3 解决方案:
Calendar.current.date(byAdding: .day, value: 10, to: Date())
回答by thinkswift
Here's how to get a date 10 days from now, using built-in date modification method .dateByAddingUnit If all 10 days (dates) are required, can be looped by "value:10" part and added to array.
以下是如何使用内置日期修改方法获取 10 天后的日期。dateByAddingUnit 如果需要所有 10 天(日期),可以通过“value:10”部分循环并添加到数组中。
var tenDaysfromNow: NSDate {
return NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: 10, toDate: NSDate(), options: [])!
}
print(tenDaysfromNow)
And for Swift3:
对于 Swift3:
var tenDaysfromNow: Date {
return (Calendar.current as NSCalendar).date(byAdding: .day, value: 10, to: Date(), options: [])!
}
回答by Midhun MP
You can use the dateByAddingTimeInterval()method for this.
您可以为此使用dateByAddingTimeInterval()方法。
var dateStr = "2015-03-09"
var formatter = NSDateFormatter()
formatter.dateFormat = "YYYY-MM-dd"
var currDate = formatter.dateFromString(dateStr)
for i in 1...10
{
var interval = NSTimeInterval(60 * 60 * 24 * i)
var newDate = currDate?.dateByAddingTimeInterval(interval)
println(newDate)
}
EDIT:
编辑:
As mentioned by @Martin R in the comments, it'll be better to use dateByAddingComponents()of NSCalendar class:
正如@Martin R 在评论中提到的,使用NSCalendar 类的dateByAddingComponents()会更好:
var calendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)
var dateComponent = NSDateComponents()
for i in 1...10
{
dateComponent.day = i
var newDate = calendar?.dateByAddingComponents(dateComponent, toDate: currDate!, options:nil)
println(newDate)
}
回答by Duyen-Hoa
There is a function 'dateByAddingTimeInterval()' for an NSDate object. With this, you can create a NSDate from your date string. Then add 10 days = 10*24*60*60 to get next 10 days NSDate value
NSDate 对象有一个函数“dateByAddingTimeInterval()”。有了这个,您可以从您的日期字符串创建一个 NSDate。然后加上 10 天 = 10*24*60*60 得到接下来的 10 天 NSDate 值
let today : NSDate = ....
let next10days = today.dateByAddingTimeInterval(10*60*60*24); //interval = seconds
//then you convert back to your date string format if you want, by using NSDateFormatter
To avoid problem with Daylighttime saving (@MartinR):
为避免夏令时问题(@MartinR):
let cal = NSCalendar(calendarIdentifier: NSGregorianCalendar)
let next10Days = cal.dateByAddingUnit(NSCalendarUnit.DayCalendarUnit, value: 10, toDate: today, options: nil)
回答by Joakim Danielson
Here is a swift 4/5 version of the answer by @MidhunMP
这是@MidhunMP 快速 4/5 版本的答案
var dateStr = "2015-03-09"
var formatter = DateFormatter()
formatter.dateFormat = "YYYY-MM-dd"
var calendar = Calendar(identifier: .gregorian)
var dateComponent = DateComponents()
if let currDate = formatter.date(from: dateStr) {
for i in 1...10 {
let newDate = calendar.date(byAdding: .day, value: i, to: currDate)
print(newDate)
}
}
回答by hegranes
For Swift 3:
对于 Swift 3:
let now = NSDate()
let plusTen = now.dateByAddingDays(10)