현재 날짜에서 7일 빼기
저는 현재 날짜에서 7일을 뺄 수 없을 것 같습니다.저는 이렇게 하고 있습니다.
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setDay:-7];
NSDate *sevenDaysAgo = [gregorian dateByAddingComponents:offsetComponents toDate:[NSDate date] options:0];
SevenDaysAgo는 현재 날짜와 동일한 값을 받습니다.
제발 도와주세요.
편집: 내 코드에서 현재 날짜를 가져오는 변수를 올바른 변수로 바꾸는 것을 잊었습니다.위의 코드는 기능합니다.
코드:
NSDate *currentDate = [NSDate date];
NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
[dateComponents setDay:-7];
NSDate *sevenDaysAgo = [[NSCalendar currentCalendar] dateByAddingComponents:dateComponents toDate:currentDate options:0];
NSLog(@"\ncurrentDate: %@\nseven days ago: %@", currentDate, sevenDaysAgo);
[dateComponents release];
출력:
currentDate: 2012-04-22 12:53:45 +0000
seven days ago: 2012-04-15 12:53:45 +0000
그리고 나는 JeremyP의 말에 전적으로 동의한다.
BR.
유진
iOS 8 또는 OS X 10.9 이상을 실행하고 있다면 보다 깔끔한 방법이 있습니다.
NSDate *sevenDaysAgo = [[NSCalendar currentCalendar] dateByAddingUnit:NSCalendarUnitDay
value:-7
toDate:[NSDate date]
options:0];
또는 Swift 2의 경우:
let sevenDaysAgo = NSCalendar.currentCalendar().dateByAddingUnit(.Day, value: -7,
toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))
또한 Swift 3 이상에서는 더욱 콤팩트해집니다.
let sevenDaysAgo = Calendar.current.date(byAdding: .day, value: -7, to: Date())
dateByAddingTime 사용간격 방법:
NSDate *now = [NSDate date];
NSDate *sevenDaysAgo = [now dateByAddingTimeInterval:-7*24*60*60];
NSLog(@"7 days ago: %@", sevenDaysAgo);
출력:
7 days ago: 2012-04-11 11:35:38 +0000
스위프트 3
Calendar.current.date(byAdding: .day, value: -7, to: Date())
Swift 연산자 확장:
extension Date {
static func -(lhs: Date, rhs: Int) -> Date {
return Calendar.current.date(byAdding: .day, value: -rhs, to: lhs)!
}
}
사용.
let today = Date()
let sevenDayAgo = today - 7
Swift 4.2 - 뮤트(업데이트) 셀프
날짜 변수(업데이트/변환)가 이미 있는 경우 원본 포스터를 일주일 전에 가져올 수 있는 또 다른 방법이 있습니다.
extension Date {
mutating func changeDays(by days: Int) {
self = Calendar.current.date(byAdding: .day, value: days, to: self)!
}
}
사용.
var myDate = Date() // Jan 08, 2019
myDate.changeDays(by: 7) // Jan 15, 2019
myDate.changeDays(by: 7) // Jan 22, 2019
myDate.changeDays(by: -1) // Jan 21, 2019
또는
// Iterate through one week
for i in 1...7 {
myDate.changeDays(by: i)
// Do something
}
dymv의 답변은 훌륭합니다.이것은 빠르게 사용할 수 있습니다.
extension NSDate {
static func changeDaysBy(days : Int) -> NSDate {
let currentDate = NSDate()
let dateComponents = NSDateComponents()
dateComponents.day = days
return NSCalendar.currentCalendar().dateByAddingComponents(dateComponents, toDate: currentDate, options: NSCalendarOptions(rawValue: 0))!
}
}
이것은, 다음과 같이 전화할 수 있습니다.
NSDate.changeDaysBy(-7) // Date week earlier
NSDate.changeDaysBy(14) // Date in next two weeks
도움이 되길 바라며 dymv에 thx
Swift 4.2 iOS 11.x Babec 솔루션, 순수 Swift
extension Date {
static func changeDaysBy(days : Int) -> Date {
let currentDate = Date()
var dateComponents = DateComponents()
dateComponents.day = days
return Calendar.current.date(byAdding: dateComponents, to: currentDate)!
}
}
원래 승인된 답변의 Swift 3.0+ 버전
날짜(.adding Time)간격(-7 * 24 * 60 * 60)
단, 절대값만 사용합니다.대부분의 경우 일정표 사용 답변이 더 적합합니다.
스위프트 5
현재 날짜에서 날짜를 추가하거나 빼는 함수입니다.
func addOrSubtructDay(day:Int)->Date{
return Calendar.current.date(byAdding: .day, value: day, to: Date())!
}
함수를 호출합니다.
var dayAddedDate = addOrSubtructDay(7)
var daySubtractedDate = addOrSubtructDay(-7)
- 날짜 통과 예상 날짜 값을 추가하려면
- 통과 음수 일 값을 빼는 방법
스위프트 3:
도브의 대답에 대한 수정입니다.
extension Date {
func dateBeforeOrAfterFromToday(numberOfDays :Int?) -> Date {
let resultDate = Calendar.current.date(byAdding: .day, value: numberOfDays!, to: Date())!
return resultDate
}
}
사용방법:
let dateBefore = Date().dateBeforeOrAfterFromToday(numberOfDays : -7)
let dateAfter = Date().dateBeforeOrAfterFromToday(numberOfDays : 7)
print ("dateBefore : \(dateBefore), dateAfter :\(dateAfter)")
SWIFT 3.0의 경우
funtion은 다음과 같이 일수, 월수, 일수를 모두 줄일 수 있습니다.예를 들어, 현재 시스템 날짜의 연수를 100년 줄였습니다.일수, 월수는 할 수 있습니다.카운터를 설정하여 배열에 저장합니다.이 배열은 func current Time() 이외의 임의의 장소에서 실행할 수 있습니다.
{
let date = Date()
let calendar = Calendar.current
var year = calendar.component(.year, from: date)
let month = calendar.component(.month, from: date)
let day = calendar.component(.day, from: date)
let pastyear = year - 100
var someInts = [Int]()
printLog(msg: "\(day):\(month):\(year)" )
for _ in pastyear...year {
year -= 1
print("\(year) ")
someInts.append(year)
}
print(someInts)
}
언급URL : https://stackoverflow.com/questions/10209427/subtract-7-days-from-current-date
'source' 카테고리의 다른 글
텍스트 파일을 Windows 명령줄과 연결하고 선행 행을 삭제합니다. (0) | 2023.04.12 |
---|---|
임의의 순서로 두 개의 이름을 포함하는 문자열과 일치하도록 정규 표현 (0) | 2023.04.12 |
WPF MVVM 탐색 뷰 (0) | 2023.04.12 |
Objective-C의 자동 기준 계수가 방지하거나 최소화하지 못하는 누출의 종류는 무엇입니까? (0) | 2023.04.12 |
Python 목록의 True Bohan 수 계산 (0) | 2023.04.12 |