【发布时间】:2020-05-22 22:45:45
【问题描述】:
我使用的程序返回时间戳在Java date objects 中的数据。我需要在 Matlab 中读取时间,并能够使用在 Matlab 中生成的可能指定时区的日期时间数组进行日期时间算术。如何将 Java 日期对象转换为带有时区的 Matlab 日期时间数组?
我一直在尝试使用Java time serial。但我无法在 Matlab 中正确获取时区。
例如,现在是美国东部标准时间下午 2:30,Matlab 中的 now 函数按预期工作。
>> datetime(now,'ConvertFrom','datenum','TimeZone','America/New_York')
ans =
datetime
06-Feb-2020 14:37:40
但是,从 Java 时间序列开始,即自 1970/1/1 GMT 以来的时间(以毫秒为单位),同一行不起作用。东部标准时间上午 10:40 的日期对象返回以下内容。
>> class(JavaDateObj)
ans =
'java.util.Date'
>> format long
>> JavaDateObj.getTime
ans =
1.581003592273000e+12
% to run this snippet, ignore the above; set JavaDateSerial = 1.581003592273000e+12; and replace JavaDateObj.getTime below with JavaDateSerial
%%%% expecting time in EST below and get time in GMT instead
>> datetime(datenum([1970 1 1 0 0 JavaDateObj.getTime/1000]),'ConvertFrom','datenum','TimeZone','America/New_York')
ans =
datetime
06-Feb-2020 15:39:52
%%%% expecting now to be later than earlier but get the wrong result
>> temp=ans;
>> datetime(now,'ConvertFrom','datenum','TimeZone','America/New_York') > temp
ans =
logical
0
如果使用日期序列是使上述转换工作的方法,你如何将 Java 时间序列中的时区合并到 Matlab 中?
如果有其他方法可以将Java日期对象转换为带时区的Matlab日期时间数组,请指教。
【问题讨论】: