2014-11-24 12 views
-1

줄리안 날짜 값을 보통 날짜로 변환하고 싶습니다. 아무도 나를 도울 수 있습니까? JulianDateToDateTime (somedouble 값)을 시도했지만 예외가 발생했습니다. 그렇다면 ModifiedJulianDateToDateTime (이중 값)을 시도했지만 날짜를 게시했지만 총합이 잘못되었습니다. 예를 들어 내 줄리안 값은 226입니다. 8 월 14 일에 표시되어야한다고 나와 있습니다. 그러나 나는 couldig itig 그것을 델파이로 변환한다. 감사합니다.Delphi Julian 날짜 정상 날짜

+0

8 월 14 일을 반환합니다 : 함수는 (당신이 할 율리우스 일이 고려되어야 연도를 지정)이 있는데, TDate로 변환하기 추가 할 때 현재 연도의 오프셋. 율리우스 날짜는 1414 년 8 월 14 일에 약 2456883 - 2456884입니다. –

답변

0

이 "율리우스 날짜"정말 "줄리안 날"(. 즉, 특정 연도에 일의 수, 일명 서수 날짜), 당신은 다음을 사용할 수있는 경우

uses DateUtils; 

FUNCTION JulianDay(Year,Day : Cardinal) : TDate; 
    BEGIN 
    Result:=IncDay(EncodeDate(Year,1,1),PRED(Day)) 
    END; 

이 JULIANDAY 당신은 운이 더있을 수 있습니다 (2014,226)

+0

내 프로그램에이 기능을 추가했습니다. 그리고 두 개의 매개 변수를 보냅니다. 나는 2014 년과 Day를 (줄리안 데이로 텍스트에서 읽음) 결과를 보여 주지만, 결과는 419962 – DelphiCoding

+0

@DelphiCoding, DecodeDate를 사용하여 실제 날짜 또는 DateTimeToString을 해결합니다. –

+0

예. 그것은 TDate (또는 TDateTime)가 언젠가 과거의 날 이후의 일 (그리고 부분 일수)의 카운터이기 때문입니다. 이것을 표시 가능한 문자열로 변환하려면 FormatDateTime 함수를 찾으십시오. 여기를보십시오 : http://www.delphibasics.co.uk/RTL.asp?Name=FormatDateTime – HeartWare

4

System.DateUtils.JulianDateToDateTime은 율리우스 날짜를 TDateTime 값으로 변환합니다. 문서에서

:

율리우스 날짜, 분수 일을 포함하여 일 수있다 4713부터 BC 년 1 월 1 일 그리니치 정오.

그리고 System.DateUtils.ModifiedJulianDateToDateTime을 위해 :

수정 된 율리우스 날짜는 1858 수정 율리우스 날짜 율리우스 날짜를 기반으로하지만, 조정 11 월 17 일에 그리니치 자정 이후, 분수 일을 포함하여 일 수있다 점심 시간 대신 정오보다 한밤중을 사용하고 최근 날짜를 시작점으로 사용합니다.

따라서 시작점 중 하나를 기준으로 줄리안 날짜를 입력해야합니다. DateTimeToJulianDate/DateTimeToModifiedJulianDate :


당신은 올바른 율리우스 날짜를 얻기 위해 역 기능을 사용할 수 있습니다. 당신이 가지고있는 날짜 (때로는 기상 데이터 로깅 시스템에 율리우스 일이라고도 함) 특정 연도의 일 번호가 같은 의견에


는 것 같다.

그런 다음이를 사용

myDT := EncodeDate(2014,1,1) + yourJulianDay - 1; // If the year is 2014 
+0

불행히도 나는 당신을 이해하지 못했습니다. 예를 들어 주시겠습니까? – DelphiCoding

+0

줄리안 날짜 문자열을 텍스트 파일에서 226 읽었습니다. 그래서 역 기능을 사용할 수 없습니다. – DelphiCoding

+0

"Julian Date"처럼 보이지 않습니다. 그것은 당신의 가치가 "1 월 1 일부터 시작되는 현재 년도의 일수"와 더 비슷하게 들립니다. 그건 당신의 기본 연도가 윤년인지 아닌지에 따라, 당신의 정의에있는 율리우스 력 날짜가 다를 것입니다. 즉. 귀하의 "율리우스 날짜"는 8 월 13 일 (윤년) 또는 8 월 14 일 (다른 해) 일 수 있습니다. Doen't는 줄리안 날짜의 매우 고정 된 정의처럼 들립니다. 시스템을 사용하려면 연도를 포함시켜야합니다. Julian date 2014 # 226 = Aug 14, Julian date 2012 # 226은 Aug 13입니다. – HeartWare