2011-08-03 6 views
0

Objective-C에서 Double 값을 Date 값으로 변환해야합니다. 여러 가지 방법을 시도했지만 이해하지 못했습니다. 여기 var1Objective-C에서 Double 값을 Date 값으로 변환하는 방법

date=var1/24; 

변수로 일 날짜로 (24)에 의해 분할되어 저장되어야 이중 값이다. Objective-C를 사용하여이 작업을 수행하려면 어떻게해야합니까? 나는이 작업을 수행 할 수있는 방법

NSDate *date=[[NSDate alloc]init]; 
date=(nsdate)var1/24; 

:

는이 같은 날짜 변수를 만들어?

+2

이것은별로 의미가 없습니다. var1이란 무엇입니까? 1970 년 이래로 몇 분? –

답변

0

정확히 무엇을하고 싶은지에 따라 다르지만 직접 캐스트는 (nsdate)var1/24 일 것입니다. !!!

어쨌든 변수 var1은 정확히 무엇을 나타 냅니까? 분? 초입니까? 시간 ? 어느 기준일부터? 오늘? 유닉스 시대? 유닉스 타임 스탬프인가? (1970 년 1 월 1 일 이후 초)?

이러한 질문에 대한 답변에 따라 NSDateComponents를 사용하여 다른 날짜 구성 요소 (월, 일, 일, 시간, 분, 초, ...), 또는 dateWithTimeIntervalSince1970을 사용하여 UNIX 타임 스탬프에서 NSDate를 생성하거나 필요에 따라 NSDate 또는 NSDateComponents의 다른 메소드를 사용하십시오.

문제가 무엇이든지간에 을 읽으세요. *Date and TIme Programming Guide !! 은 날짜 조작에 대해 여기에서 설명합니다. 그것은 당신이 당신의 질문에 대답하는 데 필요한 모든 것을 포함 할 것입니다.

+0

그것의 이중 변수 .. 24 시까 지 값을 포함하게 될 것입니다 .. – smilu

+0

'''NSDate''' 클래스 참조 문서에서 그 메소드를 사용하지 않으시겠습니까? 특히'''dateWithTimeIntervalSinceNow :''', 지금부터 간격을 (초 단위로) 전달합니까? 몇 시간 만에 3600을 곱하면 timeInterval 매개 변수를 초 단위로 전달할 수 있습니다. – AliSoftware

+0

"now"에는 현재 시간이 포함됩니다. 대답은 아직 정확하지 않았습니다. "오늘 0:00:00"또는 "오늘, 현재 시간"에서 시간을 계산 하시겠습니까? 자정부터 온다면 NSDateComponents 메소드를 사용해야한다. 위에 링크되어있는 Programming Guide를 참조하기 바란다. ** 모든것 **이 자세히 설명되어있다. 예 : 현재 날짜를 NSDateComponents (년, 월, 일, 시간 정보 없음)로 분해 한 다음 "시간"구성 요소를'''var1/24'''로 변경하고''dateFromComponents :'''를 사용하여 예상 시간을 생성하십시오 출력 날짜. – AliSoftware

1

그 24 개까지 값이 포함됩니다 두 변수 .. 그것은 당신이 상대 값을 가질 수 있도록 추가 할 것을 .. 오늘부터 HOURS를 나타내는

확인 될 것입니다 절대 값입니다. 추가 작업이 필요합니다.

먼저 "오늘은 무엇입니까?"를 결정해야합니다. 12시 1 분인가요? 있다면, 어떤 시간대? 그리니치 표준시? 다른 것? 너 입니다. 그리니치 표준시 12시 1 분은 동부 표준시로 오전 12시 1 분과 똑같지 않습니다. 그래서 : 오늘은 무엇입니까?

에서 측정 할 위치를 결정했으면 해당 시점을 나타내는 NSDate을 구성해야합니다. 예를 들어

:

NSDate *rightNow = [NSDate date]; 
NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *components = [calendar components:NSUIntegerMax fromDate:rightNow]; 

이 당신에게 일정에 상대적으로 시간 에 지점을 나타내는 개체 인 NSDateComponents 객체를 제공 할 것입니다. 이 경우 "현재 캘린더"(아마도 그레고리력이지만 반드시 그렇지는 않음)를 사용하고 있으며 기본 시간대는 현재 시간대입니다. 다른 표준 시간대를 기준으로해야하는 경우 새 NSTimeZone 개체를 만들고 -[NSCalendar setTimeZone:]을 사용하여 날짜 구성 요소를 요구하기 전에 일정의 표준 시간대를 설정할 수 있습니다.

[components setHour:0]; 
[components setMinute:0]; 
[components setSecond:0]; 

그런 다음 우리가 시간에 절대 점 만들기 위해 NSDate로 다시 설정할 수 있습니다 : 이제, 우리는 적절한 시간에 일을 "재설정"할 수있는 날짜 구성 요소를 가지고 있음을

:

NSDate *startingPoint = [calendar dateFromComponents:components]; 

지금 우리는 우리의 출발점을 가지고 있고, "오늘부터 시간"를 처리 할 수 ​​있습니다. 첫째, 우리는 구성 요소가 있지만 많은 시간을 차이를 나타내는 객체의 날짜를 만듭니다 것은 :

NSInteger hourDelta = var1/24; 
NSDateComponents *delta = [[NSDateComponents alloc] init]; 
[delta setHour:hourDelta]; 

이제, 우리는 우리의 절대 시작일이 상대적 차이를 추가 할 것입니다 :

NSDate *finalDate = [calendar dateByAddingComponents:delta toDate:startingPoint options:0]; 

때문에를 (당신이 쓰레기 수거를 사용하거나 ARC 컴파일하지 않는 한) 우리는 좋은 시민이야, 우리는 우리의 기억을 정리합니다 :

[delta release]; 

몇 가지 중요한 노트 :

  • NSCalendar은 "하루"가 의미하는 것과 "시간"이 무엇인지 정의하기 때문에 모든 조작은 NSCalendar 개체를 통해 수행됩니다. "하루에 24 시간, 한 시간에 60 분이라고 생각합니다."하지만 반드시 그런 것은 아닙니다. 하루에 10 시간, 한 시간에 10 분씩 내 캘린더를 만들 수 있습니다. 원한다면 "지구를 1 회전"하는 것 이외의 다른 일로 "하루"를 정의 할 수 있습니다. NSCalendar은이 모든 규칙을 정의합니다. 따라서, 날짜의 모든 상대적인 조작 ("시간"및 "일"또는 기타를 추가)은 달력을 통해 수행되어야합니다.
  • NSDate에 대한 방법이 있습니다. 예를 들어 -dateByAddingTimeInterval:과 같지만 절대 간격을 처리 할 때는 이 아니고이 아닌 상대적인 값입니다.
+0

Tanx 많이 .. .. :) – smilu

관련 문제