단순한 것 같지만 방법을 찾을 수없는 것 같습니다.
몇 가지 다른 방법을 보는 것이 좋을 것입니다.
단순한 것 같지만 방법을 찾을 수없는 것 같습니다.
몇 가지 다른 방법을 보는 것이 좋을 것입니다.
답변:
이것을 사용할 수 있습니다
NSString *dateString = @"03-Sep-11";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"dd-MMM-yy";
NSDate *date = [dateFormatter dateFromString:dateString];
이것이 당신을 도울 수 있기를 바랍니다.
예는 종종 배우는 가장 쉬운 방법입니다. 다음은 몇 가지 예입니다.
이것은 가장 쉬운 방법입니다.
let currentDateTime = Date()
// 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)
// 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
.
init
.
이 질문에 대한 답을 찾는 동안이 스레드를 찾았지만 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 함수 중 일부가 제대로 작동하지 않습니다.
setHour
,setMinute
,setSecond
미세한 입도를 들어, 등.