iPhone OS : 특정 날짜에 대한 NSDate를 어떻게 생성합니까? 것 같지만

단순한 것 같지만 방법을 찾을 수없는 것 같습니다.

몇 가지 다른 방법을 보는 것이 좋을 것입니다.



답변

@Chuck의 대답이 정확하고 다음 코드로 연결됩니다. 공유 할 생각 :

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:10];
[comps setMonth:10];
[comps setYear:2010];
NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:comps];

답변

이것을 사용할 수 있습니다

NSString *dateString = @"03-Sep-11";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"dd-MMM-yy";
NSDate *date = [dateFormatter dateFromString:dateString];

이것이 당신을 도울 수 있기를 바랍니다.


답변

UNIXy 날짜가 아닌 특정 달력 날짜에 대해 이야기하는 경우 NSCalendar의 dateFromComponents:.


답변

Swift 예제

예는 종종 배우는 가장 쉬운 방법입니다. 다음은 몇 가지 예입니다.

지금

이것은 가장 쉬운 방법입니다.

let currentDateTime = Date()

2017 년 2 월 20 일

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 2017
dateComponents.month = 2
dateComponents.day = 20

// Create date from components
let userCalendar = Calendar.current // user calendar
let dateThisPostWasUpdated = userCalendar.date(from: dateComponents)

1976 년 4 월 1 일

// Specify date components
var dateComponents = DateComponents()
dateComponents.year = 1976
dateComponents.month = 4
dateComponents.day = 1

// Create date from components
let userCalendar = Calendar.current // user calendar
let appleFoundedDate = userCalendar.date(from: dateComponents)

더 자세한 정보가 필요하십니까 …?

날짜를 만드는 다른 방법도 있습니다. 날짜 를 표시 하는 방법뿐만 아니라 그 내용을 배우고 싶다면 더 자세한 답변참조하십시오 .


답변

NSDate에 대한 문서를 참조하십시오 . 의 dateFromString:방법 NSDateFormatter또는의 dateFromComponents:방법을 사용할 수 있습니다 NSCalendar.


답변

이 질문에 대한 답을 찾는 동안이 스레드를 찾았지만 Big Nerd Ranch Objective-C Programming 책에서 좋은 예를 찾았습니다. 내가 아니라 그들에 대한 신용.

  NSDateComponents *myBDay  =[[NSDateComponents alloc] init];
    [myBDay setDay:22];
    [myBDay setMonth: 04];
    [myBDay setYear: 1984];
    [myBDay setHour:9];
    [myBDay setMinute:25];
    [myBDay setSecond:35];

    NSCalendar *g = [[ NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDate *dateOfBirth = [g dateFromComponents:myBDay];

답변

말도 안되죠?

2013 년 중반과 Apple은 여전히 NSDate 값을 설정하는 간단한 방법을 제공하지 않았습니다.

현재 iPad 프로젝트에서 NSDate에서 Year 값을 얻기 위해 나만의 도우미 클래스를 작성하기 위해 잠시 동안 생산성을 멈춰야한다는 것을 믿을 수 없었습니다. 제 말은, 이건 기본적인 것입니다.

어쨌든, 여기에 문자열을 NSDate 값으로 변환하기 위해 프로젝트에서 사용한 도우미 클래스가 있습니다.

@implementation DateHelper

+(NSDate*)parseDateString:(NSString *)dateString
{
    NSDateFormatter *rfc3339TimestampFormatterWithTimeZone = [[NSDateFormatter alloc] init];
    [rfc3339TimestampFormatterWithTimeZone setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
    [rfc3339TimestampFormatterWithTimeZone setDateFormat:@"MMM dd, yyyy"];

    NSDate *theDate = nil;
    NSError *error = nil;
    if (![rfc3339TimestampFormatterWithTimeZone getObjectValue:&theDate forString:dateString range:nil error:&error]) {
        NSLog(@"Date '%@' could not be parsed: %@", dateString, error);
    }

    return theDate;
}

@end

이 코드를 사용하면 다음과 같이 NSDate 값을 설정할 수 있습니다.

NSDate* date = [DateHelper parseDateString:@"Jul 16, 2013"];

참고 :이 함수는 https://stackoverflow.com/a/3968411/391605 에서 가져온 코드를 기반으로합니다.

내 해결책 다음 코드를 사용하는 것이었지만 때로는 파싱하지 않고 nil 을 반환 한다는 것을 발견했습니다 .

//  Take a date string in the format "Oct 23, 2013", and convert it into a NSDate value
//  THIS DOESN'T WORK !  DON'T TRUST THIS CODE !!
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMM dd, yyyy"];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

NSDate* date = [formatter dateFromString:dateString];

나는 그것이 “2012 년 10 월 12 일”에 비참하게 실패한 것을 기억한다. 이것이 내가 포기하고 위에 표시된 더 복잡한 “parseDateString”함수를 사용한 이유이다.

내 요점은 … 조심해.

매우 기본적인 NSDate 함수 중 일부가 제대로 작동하지 않습니다.