간단히 말해서 현재 dateTime을 가져 와서 시간을 변경하고 +0800을 시간대에 적용하여 말레이시아 시간으로 변경합니다.NSString을 NSDate로 변환 변환 - 잘못된 결과
결과는 예기치 않은 :
-(NSDate *)departureDateTime
{
NSDate *date = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSDateComponents *components = [gregorian components: NSUIntegerMax fromDate: date];
[components setHour: 7];
[components setMinute: 59];
[components setSecond: 17];
NSDate *newDate = [gregorian dateFromComponents: components];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-mm-dd HH:mm:ss Z"];
[dateFormat setLocale:[NSLocale currentLocale]];
NSString *newDateString = [NSString stringWithFormat:@"%@",newDate];
NSString *maskString = [NSString stringWithFormat:@"%@", [newDateString substringToIndex:20]];
NSString *append = [maskString stringByAppendingString:@"+0800"];
NSLog(@"%@",append);
NSDate *finalLocalDate = [dateFormat dateFromString:append];
return finalLocalDate;
}
결과 : NSLog 추가]에 대한
: 2013-12-07 23:59:17 +0800
하지만 finalLocalDate : 2013-01-07 15:59:17 +0000
모든 시간대를 현지 시간대로 설정하지 않으므로 모든 날짜 변환은 현지 시간대로 표시됩니다. 그리고 NSDate는 항상 GMT로 인쇄합니다. –
BTW, 월 형식을 지정하려면 "mm"이 아니라 "MM"을 사용하십시오. –