제목에서 알 수 있듯이 기본적으로 에 1 일을 추가 할 수있는 방법이 궁금합니다 NSDate
.
만약 그렇다면 :
21st February 2011
그것은 될 것입니다 :
22nd February 2011
또는 다음과 같은 경우 :
31st December 2011
그것은 될 것입니다 :
1st January 2012.
답변
스위프트 5.0 :
var dayComponent = DateComponents()
dayComponent.day = 1 // For removing one day (yesterday): -1
let theCalendar = Calendar.current
let nextDate = theCalendar.date(byAdding: dayComponent, to: Date())
print("nextDate : \(nextDate)")
목표 C :
NSDateComponents *dayComponent = [[NSDateComponents alloc] init];
dayComponent.day = 1;
NSCalendar *theCalendar = [NSCalendar currentCalendar];
NSDate *nextDate = [theCalendar dateByAddingComponents:dayComponent toDate:[NSDate date] options:0];
NSLog(@"nextDate: %@ ...", nextDate);
이것은 설명이 필요합니다.
답변
iOS 8부터 사용할 수 있습니다 NSCalendar.dateByAddingUnit
Swift 1.x의 예 :
let today = NSDate()
let tomorrow = NSCalendar.currentCalendar()
.dateByAddingUnit(
.CalendarUnitDay,
value: 1,
toDate: today,
options: NSCalendarOptions(0)
)
스위프트 2.0 :
let today = NSDate()
let tomorrow = NSCalendar.currentCalendar()
.dateByAddingUnit(
.Day,
value: 1,
toDate: today,
options: []
)
스위프트 3.0 :
let today = Date()
let tomorrow = Calendar.current.date(byAdding: .day, value: 1, to: today)
답변
스위프트 5 업데이트
let today = Date()
let nextDate = Calendar.current.date(byAdding: .day, value: 1, to: today)
목표 C
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
// now build a NSDate object for the next day
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setDay:1];
NSDate *nextDate = [gregorian dateByAddingComponents:offsetComponents toDate: [NSDate date] options:0];
답변
iOS 8 이상, OSX 10.9 이상, Objective-C
NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *tomorrow = [cal dateByAddingUnit:NSCalendarUnitDay
value:1
toDate:[NSDate date]
options:0];
답변
highmaintenance의 답변과 vikingosegundo의 의견을 기반으로 작동하는 Swift 3 이상 구현 . 이 날짜 확장에는 연도, 월 및 시간을 변경하는 추가 옵션도 있습니다.
extension Date {
/// Returns a Date with the specified amount of components added to the one it is called with
func add(years: Int = 0, months: Int = 0, days: Int = 0, hours: Int = 0, minutes: Int = 0, seconds: Int = 0) -> Date? {
let components = DateComponents(year: years, month: months, day: days, hour: hours, minute: minutes, second: seconds)
return Calendar.current.date(byAdding: components, to: self)
}
/// Returns a Date with the specified amount of components subtracted from the one it is called with
func subtract(years: Int = 0, months: Int = 0, days: Int = 0, hours: Int = 0, minutes: Int = 0, seconds: Int = 0) -> Date? {
return add(years: -years, months: -months, days: -days, hours: -hours, minutes: -minutes, seconds: -seconds)
}
}
OP의 요청에 따라 하루를 추가하는 용도는 다음과 같습니다.
let today = Date() // date is then today for this example
let tomorrow = today.add(days: 1)
답변
스위프트 4.0 (의 스위프트 3.0와 같은 이 멋진 대답은 그냥 나 같은 신인에 대한 취소하고)
let today = Date()
let yesterday = Calendar.current.date(byAdding: .day, value: -1, to: today)
답변
아래 함수를 사용하고 days 매개 변수를 사용하여 days daysAhead / daysBehind 매개 변수를 사용하여 미래 날짜에 대해 양수 또는 이전 날짜에 대해 음수로 매개 변수를 전달하십시오.
+ (NSDate *) getDate:(NSDate *)fromDate daysAhead:(NSUInteger)days
{
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
dateComponents.day = days;
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *previousDate = [calendar dateByAddingComponents:dateComponents
toDate:fromDate
options:0];
[dateComponents release];
return previousDate;
}