나는 NSDate 객체를 가지고 있고 그날의 정수가 필요하다. 즉, 2010 년 5 월 25 일이되면 int는 25가되어야합니다. 간단한 방법이 있습니까?NSDate에서 하루 구성 요소를 가져 오는 방법은 무엇입니까?
답변
참고있는 NSDate가에 대한 생각은 "일"단지 타임 스탬프이며에만 있음 주어진 달력과 시간대. 당신은 UTC 일하려면 현재 시간대의 태양력,
NSTimeZone * tz = [NSTimeZone localTimeZone];
CFAbsoluteTime at = CFDateGetAbsoluteTime((CFDateRef)date);
int day = CFAbsoluteTimeGetGregorianDate(at, (CFTimeZoneRef)tz).day;
을 원하는 경우에, tz = nil
을 설정합니다.
또한 CFAbsoluteTime과 NSDate는 86400 초의 날짜를 지정하는 POSIX 시간을 기준으로 (필자가 아는 한)이므로 윤초는 처리하지 않습니다.
NSDate
에서 캘린더 구성 요소를 가져 오는 방법은 this post입니다. 기본적으로이 같이 보일 것입니다 :
NSCalendar* calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents* components = [calendar components:NSDayCalendarUnit
fromDate:myDate];
NSInteger day = [components day];
(위의 메모리 관리를 잊지 마세요.)
이렇게하는 방법입니다. 날짜 포맷터 및 기타 광기를 생성하지 않습니다. –
이것은 OP가 원했던 것이고 아직 받아 들여지지 않은 대답 인 것 같습니다. – ohhh
NSDate의 "25"부분 만 필요하면 dateFormatter에서 가져올 수 있습니다. 같은
뭔가 : 오늘의 전체 이름의 형식으로
NSDate *today = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd"];
NSString *dayInMonthStr = [dateFormatter stringFromDate:today];
int dayInMonth = [dayInMonthStr intValue];
[dateFormatter release];
NSLog(@"Today is the %i. day of the month", dayInMonth);
사용 "EEEE".
요일의 짧은 이름 형식으로 "EEE"를 사용하십시오.
예 :
내가 잠시 다시이 문제가 있고, 나는 모든 것을 쉽게하기 위해 다음과 같은 방법을 만들어- (NSString *)getDayOfTheWeek:(NSDate *)date{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init] ;
[dateFormatter setDateFormat:@"EEEE"];
NSString *formattedDateString = [dateFormatter stringFromDate:date];
return formattedDateString;
}
.
정의
#define DATE_TYPE_hhmmss [NSArray arrayWithObjects:@"h", @"m", @"s", nil]
#define DATE_TYPE_MMDDYYYY [NSArray arrayWithObjects:@"M", @"D", @"Y", nil]
#define DATE_TYPE_MMDDYYYYhhmmss [NSArray arrayWithObjects:@"M", @"D", @"Y", @"h", @"m", @"s", nil]
#define DATE_TYPE_MMDDYYYYWWhhmmss [NSArray arrayWithObjects:@"M", @"D", @"Y", @"W", @"h", @"m", @"s", nil]
#define DATE_TYPE_MMDDYYYYhhmmssWW [NSArray arrayWithObjects:@"M", @"D", @"Y", @"h", @"m", @"s", @"W", nil]
#define DATE_TYPE_YYYYMMDD [NSArray arrayWithObjects:@"Y", @"M", @"D", nil]
#define DATE_TYPE_YYYYMMDDhhmmss [NSArray arrayWithObjects:@"Y", @"M", @"D", @"h", @"m", @"s", nil]
#define DATE_TYPE_YYYYMMDDWWhhmmss [NSArray arrayWithObjects:@"Y", @"M", @"D", @"W", @"h", @"m", @"s", nil]
#define DATE_TYPE_YYYYMMDDhhmmssWW [NSArray arrayWithObjects:@"Y", @"M", @"D", @"h", @"m", @"s", @"W", nil]
#define DATE_TYPE_FRIENDLY [NSArray arrayWithObjects:@"xx", nil]
날짜 방법
는 값에서 날짜를 만들기
-(NSDate *) getDateWithMonth:(int)month day:(int)day year:(int)year {
NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
NSDateComponents * dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]];
[dateFormatter setDateFormat:@"MM"];
[dateComponents setMonth:month];
[dateFormatter setDateFormat:@"DD"];
[dateComponents setDay:day];
[dateFormatter setDateFormat:@"YYYY"];
[dateComponents setYear:year];
NSDate * result = [calendar dateFromComponents:dateComponents];
return result;
}
-(NSDate *) getDateWithMonth:(int)month day:(int)day year:(int)year hour:(int)hour minute:(int)minute {
NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
NSDateComponents * dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:[NSDate date]];
[dateFormatter setDateFormat:@"MM"];
[dateComponents setMonth:month];
[dateFormatter setDateFormat:@"DD"];
[dateComponents setDay:day];
[dateFormatter setDateFormat:@"YYYY"];
[dateComponents setYear:year];
[dateFormatter setDateFormat:@"HH"];
[dateComponents setHour:hour];
[dateFormatter setDateFormat:@"MM"];
[dateComponents setMinute:minute];
NSDate * result = [calendar dateFromComponents:dateComponents];
return result;
}
-(NSDate *) getDateWithMonth:(int)month day:(int)day year:(int)year hour:(int)hour minute:(int)minute second:(int)second {
NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
NSDateComponents * dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:[NSDate date]];
[dateFormatter setDateFormat:@"MM"];
[dateComponents setMonth:month];
[dateFormatter setDateFormat:@"DD"];
[dateComponents setDay:day];
[dateFormatter setDateFormat:@"YYYY"];
[dateComponents setYear:year];
[dateFormatter setDateFormat:@"HH"];
[dateComponents setHour:hour];
[dateFormatter setDateFormat:@"MM"];
[dateComponents setMinute:minute];
[dateFormatter setDateFormat:@"SS"];
[dateComponents setSecond:second];
NSDate * result = [calendar dateFromComponents:dateComponents];
return result;
}
날짜에서 문자열을 가져
-(NSString *) getStringFromDate:(NSDate *)date dateType:(NSArray *)dateType {
NSString * result = @"";
NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSString * format = @"";
NSDateComponents * dateComponents = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekdayCalendarUnit) fromDate:date];
NSInteger year = [dateComponents year];
NSInteger month = [dateComponents month];
NSInteger day = [dateComponents day];
NSInteger weekday = [dateComponents weekday];
NSInteger hour = [dateComponents hour];
NSInteger minute = [dateComponents minute];
NSInteger second = [dateComponents second];
if (dateType != nil) {
for (int x = 0; x < [dateType count]; x++) {
if (x == ([dateType count]-1)) {
if ([[dateType objectAtIndex:x] isEqualToString:@"Y"]) {
format = [format stringByAppendingFormat:@"%d", year];
} else if ([[dateType objectAtIndex:x] isEqualToString:@"M"]) {
format = [format stringByAppendingFormat:@"%d", month];
} else if ([[dateType objectAtIndex:x] isEqualToString:@"D"]) {
format = [format stringByAppendingFormat:@"%d", day];
} else if ([[dateType objectAtIndex:x] isEqualToString:@"W"]) {
format = [format stringByAppendingFormat:@"%d", weekday];
} else if ([[dateType objectAtIndex:x] isEqualToString:@"h"]) {
format = [format stringByAppendingFormat:@"%d", hour];
} else if ([[dateType objectAtIndex:x] isEqualToString:@"m"]) {
format = [format stringByAppendingFormat:@"%d", minute];
} else if ([[dateType objectAtIndex:x] isEqualToString:@"s"]) {
format = [format stringByAppendingFormat:@"%d", second];
}
} else {
if ([[dateType objectAtIndex:x] isEqualToString:@"Y"]) {
format = [format stringByAppendingFormat:@"%d|", year];
} else if ([[dateType objectAtIndex:x] isEqualToString:@"M"]) {
format = [format stringByAppendingFormat:@"%d|", month];
} else if ([[dateType objectAtIndex:x] isEqualToString:@"D"]) {
format = [format stringByAppendingFormat:@"%d|", day];
} else if ([[dateType objectAtIndex:x] isEqualToString:@"W"]) {
format = [format stringByAppendingFormat:@"%d|", weekday];
} else if ([[dateType objectAtIndex:x] isEqualToString:@"h"]) {
format = [format stringByAppendingFormat:@"%d|", hour];
} else if ([[dateType objectAtIndex:x] isEqualToString:@"m"]) {
format = [format stringByAppendingFormat:@"%d|", minute];
} else if ([[dateType objectAtIndex:x] isEqualToString:@"s"]) {
format = [format stringByAppendingFormat:@"%d|", second];
}
}
if ([[dateType objectAtIndex:x] isEqualToString:@"xx"]) {
format = [NSString stringWithFormat:@"Year: %d, Month: %d, Day: %d, Weekday: %d, Hour: %d, Minute: %d, Second: %d", year, month, day, weekday, hour, minute, second];
}
}
} else {
format = [format stringByAppendingFormat:@"%d|", year];
format = [format stringByAppendingFormat:@"%d|", month];
format = [format stringByAppendingFormat:@"%d|", day];
format = [format stringByAppendingFormat:@"%d|", weekday];
format = [format stringByAppendingFormat:@"%d|", hour];
format = [format stringByAppendingFormat:@"%d|", minute];
format = [format stringByAppendingFormat:@"%d|", second];
format = [NSString stringWithFormat:@"%d|%d|%d|%d|%d|%d|%d", year, month, day, weekday, hour, minute, second];
}
result = format;
return result;
}
예
NSDate * date = [self getDateWithMonth:12 day:24 year:1994];
NSString * dateInString = [self getStringFromDate:date dateType:DATE_TYPE_MMDDYYYY];
int month = [[[dateInString componentsSeparatedByString:@"|"] objectAtIndex:0] intValue];
int day = [[[dateInString componentsSeparatedByString:@"|"] objectAtIndex:1] intValue];
int year = [[[dateInString componentsSeparatedByString:@"|"] objectAtIndex:2] intValue];
NSLog(@"String of Date: \"%@\"", dateInString);
NSLog(@"Month: %d", month);
NSLog(@"Day: %d", day);
NSLog(@"Year: %d", year);
당신의 문자열을 얻을 수 [self getStringFromDate:date dateType:DATE_TYPE_MMDDYYYY]
을 사용할 수 있도록, 읽기 일반적으로 하드 인 NSDate
객체를 반환 [self getDateWithMonth:12 day:24 year:1994]
방법 NSDate
개체
정의 (매크로)를 사용하여 문자열에 넣으려는 날짜의 형식을 지정하십시오. 예를 들어
: DATE_TYPE_hhmmss
가 Month|Day|Year
, DATE_TYPE_MMDDYYYYhhmmss
돌아올 것이 Hour|Minute|Second
, DATE_TYPE_MMDDYYYY
이 반환 반환 것 Month|Day|Year|Hour|Minute|Second
, DATE_TYPE_MMDDYYYYWWhhmmss
는 Month|Day|Year|Weekday (#)|Hour|Minute|Second
등등 ...
콘솔 반환 기록
2012-04-29 13:42:15.791 Atomic Class[1373:f803] String of Date: "12|24|1994"
2012-04-29 13:42:15.793 Atomic Class[1373:f803] Month: 12
2012-04-29 13:42:15.794 Atomic Class[1373:f803] Day: 24
2012-04-29 13:42:15.794 Atomic Class[1373:f803] Year: 1994
- 1. listView에서 구성 요소를 가져 오는 방법은 무엇입니까?
- 2. Jquery로 관련 요소를 가져 오는 방법은 무엇입니까?
- 3. href 요소를 선택기로 가져 오는 방법은 무엇입니까?
- 4. 배열의 중간 요소를 가져 오는 방법은 무엇입니까?
- 5. XPath를 사용하여 요소를 가져 오는 방법은 무엇입니까?
- 6. app.config에서이 구성 값을 가져 오는 방법은 무엇입니까?
- 7. IE에서 ID로 요소를 가져 오는 방법은 무엇입니까? (Visual Studio 8?)
- 8. C#에서 개체의 요소를 가져 오는 방법은 무엇입니까?
- 9. 위치를 기준으로 배열 요소를 가져 오는 가장 우아한 방법은 무엇입니까?
- 10. Linq2sql : 가중치가있는 임의의 요소를 가져 오는 효율적인 방법은 무엇입니까?
- 11. XML에서 Filemaker로 속성 및 요소를 가져 오는 방법은 무엇입니까?
- 12. jquery를 사용하여 이름으로 요소를 가져 오는 방법은 무엇입니까?
- 13. JavaScript를 사용하여 프레임 세트 프레임에서 요소를 가져 오는 방법은 무엇입니까?
- 14. PHP : 객체의 모든 요소를 가져 오는 가장 좋은 방법은 무엇입니까?
- 15. Javascript를 사용하여 호출 요소를 가져 오는 방법은 무엇입니까?
- 16. LinqToEntities 결과의 첫 번째 요소를 가져 오는 방법은 무엇입니까?
- 17. PHP DOMDocument 클래스에서 ID로 요소를 가져 오는 방법은 무엇입니까?
- 18. jquery를 사용하여 tinymce 내부의 요소를 가져 오는 방법은 무엇입니까?
- 19. C# .net의 Image에서 행렬 요소를 가져 오는 방법은 무엇입니까?
- 20. MooTools와 Request.HTML을 사용하여 원격 페이지에서 요소를 가져 오는 방법은 무엇입니까?
- 21. JavaScript : 요소를 무시하고 스크립트를 무시하고 텍스트를 가져 오는 방법은 무엇입니까?
- 22. 셀레늄의 xpath 표현식에서 텍스트 요소를 가져 오는 방법은 무엇입니까?
- 23. 선택한 항목을 가져 오는 방법 구성 요소를 끌어서 놓으시겠습니까?
- 24. 파일 이름 만 가져 오는 방법은 무엇입니까?
- 25. iframe에서 요소를 가져 오는 방법
- 26. Struts2 태그에서 중첩 구성 요소를 프로그래밍 방식으로 가져 오는 방법은 무엇입니까?
- 27. 배열의 스트립 태그 뒤에 개별 구성 요소를 가져 오는 방법은 무엇입니까?
- 28. Getter 메서드에서 호출하는 구성 요소의 ID를 가져 오는 방법은 무엇입니까?
- 29. jsf 구성 요소의 내부 내용을 가져 오는 방법은 무엇입니까?
- 30. 이전 요소를 std :: deque에서 가져 오는 방법?
가장 좋은 대답은 현재 시간대입니다. – Dmitry
@Altaveron 그건 사실이 아닙니다. 예를 들어 단위 테스트에서는 전역 상태에 액세스하는 대신 명시 적 시간대를 지정하려고합니다. –