반응형
[NSDate date]에서 현재 날짜를 가져오지만 시간을 오전 10시로 설정합니다.
[NSDate date]에서 검색된 현재 날짜를 재설정한 후 시간을 오전 10시로 변경하려면 어떻게 해야 합니까?
모든 날짜 조작과 마찬가지로 NSDateComponents 및 NSCalendar를 사용해야 합니다.
NSDate *now = [NSDate date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSCalendarIdentifierGregorian];
NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:now];
[components setHour:10];
NSDate *today10am = [calendar dateFromComponents:components];
iOS8에서 Apple은 몇 줄의 코드를 저장하는 편리한 방법을 도입했습니다.
NSDate *d = [calendar dateBySettingHour:10 minute:0 second:0 ofDate:[NSDate date] options:0];
스위프트:
let calendar: NSCalendar! = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let now: NSDate! = NSDate()
let date10h = calendar.dateBySettingHour(10, minute: 0, second: 0, ofDate: now, options: NSCalendarOptions.MatchFirst)!
이것.nsdate
다른 형식 사용:
NSDateFormatter *format = [[NSDateFormatter alloc] init];
[format setDateFormat:@"MMM dd, yyyy HH:mm"];
NSDate *now = [[NSDate alloc] init];
NSString *dateString = [format stringFromDate:now];
NSDateFormatter *inFormat = [[NSDateFormatter alloc] init];
[inFormat setDateFormat:@"MMM dd, yyyy"];
NSDate *parsed = [inFormat dateFromString:dateString];
NSDate *currentDate = [NSDate date];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setHour:10];
NSDate *date = [gregorian dateByAddingComponents:comps toDate:currentDate options:0];
[comps release];
xcode에서 테스트되지 않았지만 :)
방금 마티아스 바우치가 대답한 시간대를 설정했습니다. 그리고 그것은 저에게 효과가 있었습니다.그렇지 않으면 18시 30분이 더 추가되었습니다.
let cal: NSCalendar = NSCalendar.currentCalendar()
cal.timeZone = NSTimeZone(forSecondsFromGMT: 0)
let newDate: NSDate = cal.dateBySettingHour(1, minute: 0, second: 0, ofDate: NSDate(), options: NSCalendarOptions())!
이 방법은 분/시간/시간(일명 am/pm) 조합으로 사용할 수 있습니다.
- (NSDate *)todayModifiedWithHours:(NSString *)hours
minutes:(NSString *)minutes
andPeriod:(NSString *)period
{
NSDate *todayModified = NSDate.date;
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSMinuteCalendarUnit fromDate:todayModified];
[components setMinute:minutes.intValue];
int hour = 0;
if ([period.uppercaseString isEqualToString:@"AM"]) {
if (hours.intValue == 12) {
hour = 0;
}
else {
hour = hours.intValue;
}
}
else if ([period.uppercaseString isEqualToString:@"PM"]) {
if (hours.intValue != 12) {
hour = hours.intValue + 12;
}
else {
hour = 12;
}
}
[components setHour:hour];
todayModified = [calendar dateFromComponents:components];
return todayModified;
}
요청된 예:
NSDate *todayAt10AM = [self todayModifiedWithHours:@"10"
minutes:@"00"
andPeriod:@"am"];
언급URL : https://stackoverflow.com/questions/5611632/get-current-date-from-nsdate-date-but-set-the-time-to-1000-am
반응형
'programing' 카테고리의 다른 글
자바스크립트에서 긴 정규식을 여러 줄로 분할하는 방법은 무엇입니까? (0) | 2023.08.20 |
---|---|
장고의 컬렉션 스태틱은 무슨 의미가 있습니까? (0) | 2023.08.20 |
husky > 사전 커밋 후크 실패(바이패스하려면 --no-commit hook 추가) (0) | 2023.08.20 |
C#에서 쿼리 문자열을 업데이트하는 방법은 무엇입니까? (0) | 2023.08.20 |
iframe이 jQuery에서 로드를 완료했을 때 이벤트를 실행하려면 어떻게 해야 합니까? (0) | 2023.08.20 |