Python에서 MATLAB datetime형 사용하기
이 예제에서는 MATLAB®이 MATLAB datetime 값과 Python® datetime 또는 NumPy datetime64 값 사이에 변환하는 방법을 보여줍니다.
Python 함수에 MATLAB datetime 스칼라 전달하기
MATLAB datetime 객체를 Python 함수에 인수로 전달하면, 인터페이스는 이를 Python datetime 객체로 변환합니다. 예를 들어, MATLAB datetime 스칼라를 만들어 보겠습니다. 이 값은 마이크로초를 포함할 수 있을 만큼 정밀합니다.
mwdt = datetime("2022-11-04 03:15:35.12345",... "Format","uuuu-MM-dd HH:mm:ss.SSSSS")
mwdt = datetime 2022-11-04 03:15:35.12345
이제 이 값을 Python 함수(예: list 생성자)에 인수로 전달합니다. 인터페이스는 mwdt를 Python datetime 스칼라로 변환합니다.
pyListOfDatetime = py.list({mwdt})
pyListOfDatetime =
Python list with values:
[datetime.datetime(2022, 11, 4, 3, 15, 35, 123450)]
Python 함수에서 반환된 Python datetime 스칼라 처리하기
Python 함수가 datetime 객체를 반환하면, 인터페이스는 이 객체를 MATLAB datetime 객체로 변환합니다. 변환된 datetime 스칼라는 항상 디폴트 형식을 가집니다. 이 형식을 변경하려면 해당 Format 속성을 설정합니다. 이 예제에서는 마이크로초를 표시하도록 형식을 설정합니다.
mwdtConverted = pyListOfDatetime{1};
mwdtConverted.Format = "uuuu-MM-dd HH:mm:ss.SSSSS"
mwdtConverted = datetime 2022-11-04 03:15:35.12345
datetime 배열 전달하기
MATLAB datetime 배열을 Python datetime 값 목록으로 저장하려면 먼저 셀형 배열로 변환합니다.
mwdt = datetime(2022,11:12,4,3,15,35); mwdt = num2cell(mwdt)
mwdt =
1×2 cell array
{[04-Nov-2022 03:15:35]} {[04-Dec-2022 03:15:35]}
그런 다음 셀형 배열을 Python 함수에 인수로 전달합니다. 인터페이스는 셀형 배열을 Python datetime 값 목록으로 변환합니다.
py.print(mwdt)
(datetime.datetime(2022, 11, 4, 3, 15, 35), datetime.datetime(2022, 12, 4, 3, 15, 35))
NumPy datetime64 배열 전달하기
MATLAB datetime 배열과 NumPy datetime64 배열 간에 변환할 수 있습니다. 예를 들어, MATLAB datetime 배열을 만들어 보겠습니다.
mwdt = datetime(2022,11:12,4,3,15,35)
mwdt = 1×2 datetime array 04-Nov-2022 03:15:35 04-Dec-2022 03:15:35
NumPy가 설치되어 있는 경우, 인터페이스는 배열을 NumPy datetime64 배열로 변환합니다.
py.print(mwdt)
[['2022-11-04T03:15:35.000000' '2022-12-04T03:15:35.000000']]
py.print(py.type(mwdt))
<class 'numpy.ndarray'>
NumPy datetime64 배열을 MATLAB datetime 배열로 변환하려면 datetime 함수를 사용합니다.
pyDatetimes = py.numpy.array(mwdt)
pyDatetimes =
Python ndarray with properties:
T: [1×1 py.numpy.ndarray]
base: [1×1 py.NoneType]
ctypes: [1×1 py.numpy.core._internal._ctypes]
dtype: [1×1 py.numpy.dtype[datetime64]]
flags: [1×1 py.numpy.core.multiarray.flagsobj]
flat: [1×1 py.numpy.flatiter]
imag: [1×1 py.numpy.ndarray]
itemsize: [1×1 py.int]
nbytes: [1×1 py.int]
ndim: [1×1 py.int]
real: [1×1 py.numpy.ndarray]
shape: [1×2 py.tuple]
size: [1×1 py.int]
strides: [1×2 py.tuple]
[['2022-11-04T03:15:35.000000' '2022-12-04T03:15:35.000000']]
mwdtConverted = datetime(pyDatetimes)
mwdtConverted = 1×2 datetime array 04-Nov-2022 03:15:35 04-Dec-2022 03:15:35
MATLAB 엔진이 표준 시간대가 지정된 MATLAB datetime형 배열을 NumPy datetime64 배열로 변환하는 경우, 먼저 표준 시간대를 UTC로 변환한 다음 표준 시간대를 제거한 후 NumPy datetime64 배열을 생성합니다. 또한 Windows® 컴퓨터와 같이 시스템의 IANA(인터넷 할당 번호 관리 기관) 표준 시간대 데이터베이스가 없는 컴퓨터에서는 Python Package Index에서 Python tzdata 모듈을 설치할 수 있습니다.
Python 함수에서 반환된 여러 Python datetime 객체 처리하기
Python 함수는 여러 datetime 객체를 Python datetime 객체의 리스트 또는 튜플로 반환할 수도 있습니다. MATLAB datetime 함수를 사용하여 리스트 또는 튜플을 MATLAB datetime 배열로 변환합니다. 리스트 또는 튜플은 Python datetime.datetime 유형만 포함해야 합니다.
배열의 모든 요소는 동일한 표준 시간대 값을 포함해야 합니다. MATLAB은 Python datetime.datetime.fold 특성을 무시합니다. 함수가 리스트 pyListOfDatetime을 반환한다고 가정하겠습니다. 이 예제의 목적에 맞게, 다음 코드를 사용하여 pyListOfDatetime을 만듭니다.
pdt1 = py.datetime.datetime.now()
pdt2 = py.datetime.datetime(year=int32(2022),month=int32(12),day=int32(28))
pyListOfDatetime = py.list({pdt1, pdt2})pyListOfDatetime =
Python list with values:
[datetime.datetime(2023, 5, 3, 13, 13, 16, 980815), datetime.datetime(2022, 12, 28, 0, 0)]
Use string, double, datetime or cell function to convert to a MATLAB array.
두 datetime 객체의 시간 차이를 계산합니다.
mwdt = datetime(pyListOfDatetime); caldiff(mwdt)
ans = -4mo -6d -13h -13m -16.9808149999953s