사용자 위치에 따라 현재 날짜를 생성하는 함수가 있습니다. 이것은 영국에서 일광 절약 시간이 변경된 후에도 정확한 날짜와 시간을 제공합니다.NSDateformatter 일광 절약 시간 이후 잘못된 시간
그러나 내가로 변환 할 때
이 Coredata에 저장예 : 날짜 그러나 2013년 1월 3일 12:00 ... 나를 위해에 여분의 시간을 추가 할 것으로 보인다 날짜와 문자열을 만들려고 할 때 문자열은 1/13/2013 13:00으로 표시됩니다. 내가 로케일과 타임 존으로 변화 한 것은 변화를 가져 오는 것 같지 않습니다.
어떻게 해결할 수 있습니까? 그것은 "지역 날짜"함수 내가 올바른 시간대와 날짜 시간을 생성하지 않은 것을 지적 가치가있을 수 있습니다.
코드 :
+(NSDate*)localDate{
NSDate* date = [NSDate date];
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone* destinationTimeZone = [NSTimeZone localTimeZone];
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:date];
NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:date];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;
return [NSDate dateWithTimeInterval:interval sinceDate:date];
}
이에게 포맷 코드 :
이-(NSString*)dateWithTime{
NSDateFormatter*formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"dd"];
NSInteger day = [[formatter stringFromDate:self]integerValue];
NSInteger fullday = day;
NSString* strDay = @"";
if(day>29){
day = day - 30;
}
else if(day>19){
day = day - 20;
}
else if(day>9){
day = day - 10;
}
if(fullday ==11){
strDay = @"th";
}
else if(fullday ==12){
strDay = @"th";
}
else if(fullday ==13){
strDay = @"th";
}
else if(day == 1){
strDay = @"st";
}
else if(day ==2){
strDay = @"nd";
}
else if(day ==3){
strDay = @"rd";
}
else{
strDay = @"th";
}
[formatter setDateFormat:@"MMMM"];
NSString* month = [formatter stringFromDate:self];
[formatter setDateFormat:@"HH:mm"];
NSString* time = [formatter stringFromDate:self];
return [NSString stringWithFormat:@"%u%@ %@ %@ - %@",fullday,strDay,month,[self yearString],time];
}
편집 : 심지어 NSDateComponants 잘못된 시간을 반환 ..
NSCalendar *gregorian = [NSCalendar currentCalendar];
NSDateComponents *dateComponents = [gregorian components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:self];
심지어 1 년 미만? –
DateFormatter는 @ "dd"에 의해 이것을 찾기위한 것이 아니며 NSDateComponent를 가지고 있습니다 [comp date]'는 현재 날짜를 알려줍니다. –
방금 업데이트되었습니다.구성자는 나에게 같은 문제를 준다. 형식 작성자가 추가 시간을 추가하는 것과 같습니다 (시계가 변경된 이후에만 해당됩니다) – Dan