Main Content

날짜/시간을 율리우스 적일 또는 POSIX 시간으로 변환하기

특정 시점을 특화된 수치 형식으로 표시하기 위해 datetime형 배열을 변환할 수 있습니다. 일반적으로 이런 형식은 지정된 시작 시점 이후 경과한 초 또는 일수로 특정 시점을 표시합니다. 예를 들어, 율리우스 적일은 율리우스 주기가 시작된 이후 경과한 일수와 소수 일(Fractional Day)입니다. POSIX® 시간은 1-Jan-1970(1970년 1월 1일) 00:00:00 UTC(협정 세계시) 이후 경과한 초입니다. MATLAB®은 datetime형 배열을 율리우스 적일과 POSIX 시간으로 변환하는 juliandate 함수와 posixtime 함수를 제공합니다.

datetime형 배열에 반드시 표준 시간대를 지정할 필요는 없지만, "표준 시간대가 지정되지 않은" datetime형 값을 율리우스 적일이나 POSIX 시간으로 변환하면 예기치 않은 결과가 나올 수 있습니다. 예상된 결과를 보장하려면 변환을 수행하기 전에 표준 시간대를 지정하십시오.

변환 전에 표준 시간대 지정하기

datetime형 배열에 표준 시간대를 지정할 수 있지만, 반드시 지정해야 하는 것은 아닙니다. 실제로, datetime 함수는 기본적으로 "표준 시간대가 지정되지 않은" datetime형 배열을 만듭니다.

현재 날짜/시간에 대해 datetime형 값을 만듭니다.

d = datetime("now")
d = datetime
   25-Jan-2024 22:08:16

d는 컴퓨터의 현지 시간에서 생성되며 이와 연결된 표준 시간대가 없습니다. 대부분의 상황에서, 표준 시간대가 지정되지 않은 datetime형 배열의 시간을 현지 시간으로 처리할 수 있다고 간주할 수 있습니다. 그러나 juliandate 함수와 posixtime 함수는 표준 시간대가 지정되지 않은 datetime형 배열의 시간을 현지 시간이 아니라 UTC 시간으로 처리합니다. 모호성을 피하기 위해, 표준 시간대가 지정되지 않은 datetime형 배열에서는 juliandate 함수와 posixtime 함수를 사용하지 않는 것이 좋습니다. 예를 들어, 코드에 posixtime(datetime("now"))를 사용하지 마십시오.

datetime형 배열에 UTC 시간을 나타내지 않는 값이 포함된 경우 juliandate 함수와 posixtime 함수가 datetime형 값을 올바르게 해석하도록 TimeZone 이름-값 쌍 인수를 사용하여 표준 시간대를 지정하십시오.

d = datetime("now","TimeZone","America/New_York")
d = datetime
   25-Jan-2024 22:08:16

다른 방법으로, 배열을 만든 후에 TimeZone 속성을 지정할 수 있습니다.

d.TimeZone = "America/Los_Angeles"
d = datetime
   25-Jan-2024 19:08:16

표준 시간대의 전체 목록을 보려면 timezones 함수를 사용하십시오.

표준 시간대가 지정된 datetime형 값과 표준 시간대가 지정되지 않은 datetime형 값을 율리우스 적일로 변환하기

율리우스 적일은 역산 그레고리력의 기원전 4714년 11월 24일 정오 또는 역산 율리우스력(Julian Calendar)의 기원전 4713년 1월 1일 정오 이후의 일수(소수 일(Fractional Day) 포함)입니다. datetime형 배열을 율리우스 적일로 변환하려면 juliandate 함수를 사용하십시오.

datetime형 배열을 만들고, 해당 표준 시간대를 지정합니다.

DZ = datetime("2016-07-29 10:05:24") + calmonths(1:3);
DZ.TimeZone = "America/New_York"
DZ = 1x3 datetime
   29-Aug-2016 10:05:24   29-Sep-2016 10:05:24   29-Oct-2016 10:05:24

D를 상응하는 율리우스 적일로 변환합니다.

format longG
JDZ = juliandate(DZ)
JDZ = 1×3

          2457630.08708333          2457661.08708333          2457691.08708333

DZ의 표준 시간대가 지정되지 않은 복사본을 만듭니다. D를 상응하는 율리우스 적일로 변환합니다. D에는 표준 시간대가 없으므로 juliandate는 시간을 UTC 시간으로 처리합니다.

D = DZ;
D.TimeZone = "";
JD = juliandate(D)
JD = 1×3

          2457629.92041667          2457660.92041667          2457690.92041667

JDZJD를 비교합니다. 그 차이는 UTC와 America/New_York 표준 시간대 사이의 표준 시간대 오프셋과 같습니다(단위: 소수 일(Fractional Day)).

JDZ - JD 
ans = 1×3

         0.166666666511446         0.166666666511446         0.166666666511446

표준 시간대가 지정된 datetime형 값과 표준 시간대가 지정되지 않은 datetime형 값을 POSIX 시간으로 변환하기

POSIX 시간은 1-Jan-1970(1970년 1월 1일) 00:00:00 UTC(협정 세계시) 이후 경과한 초로서 윤초는 무시합니다. datetime형 배열을 POSIX 시간으로 변환하려면 posixtime 함수를 사용하십시오.

datetime형 배열을 만들고, 해당 표준 시간대를 지정합니다.

DZ = datetime("2016-07-29 10:05:24") + calmonths(1:3);
DZ.TimeZone = "America/New_York"
DZ = 1x3 datetime
   29-Aug-2016 10:05:24   29-Sep-2016 10:05:24   29-Oct-2016 10:05:24

D를 상응하는 POSIX 시간으로 변환합니다.

PTZ = posixtime(DZ)
PTZ = 1×3

                1472479524                1475157924                1477749924

DZ의 표준 시간대가 지정되지 않은 복사본을 만듭니다. D를 상응하는 POSIX 시간으로 변환합니다. D에는 표준 시간대가 없으므로 posixtime는 시간을 UTC 시간으로 처리합니다.

D = DZ;
D.TimeZone = "";
PT = posixtime(D)
PT = 1×3

                1472465124                1475143524                1477735524

PTZPT를 비교합니다. 그 차이는 UTC와 America/New_York 표준 시간대 사이의 표준 시간대 오프셋과 같습니다(단위: 초).

PTZ - PT
ans = 1×3

       14400       14400       14400

참고 항목

| | |

관련 항목