MATLAB到Java中的datestr函数
我在一个文件中有一个数字格式,Matlab将其转换为日期字符串。例如,格式的结构为732161.8561226851 当我在Matlab中执行MATLAB到Java中的datestr函数,java,matlab,date,datetime,Java,Matlab,Date,Datetime,我在一个文件中有一个数字格式,Matlab将其转换为日期字符串。例如,格式的结构为732161.8561226851 当我在Matlab中执行datestr(732161.8561226851)时,我得到: ans = '02-Aug-2004 20:32:49' 我希望实现相同的输出,但作为Java函数。但是,我以前没有见过这种格式,并且不确定所采取的转换过程 将其转换为日期字符串以便创建Java函数的过程是什么?格式是MATLAB的日期编号:自10000年1月0日起的天数。您可以
datestr(732161.8561226851)
时,我得到:
ans =
'02-Aug-2004 20:32:49'
我希望实现相同的输出,但作为Java函数。但是,我以前没有见过这种格式,并且不确定所采取的转换过程
将其转换为日期字符串以便创建Java函数的过程是什么?格式是MATLAB的
日期编号
:自10000年1月0日起的天数。您可以使用Java的ToutString
进行一些修改:
var d = new Date(dateMATLAB*86400000-62167305600000);
var n = d.toUTCString();
其中dateMATLAB
是MATLAB的日期输出。值6216730560000
是从第0年到1970年之间经过的毫秒数。以你为例,
var d = new Date(732161.8561226851*86400000-62167305600000);
var n = d.toUTCString();
将输出
Mon, 02 Aug 2004 20:32:48 GMT
格式为MATLAB的
日期编号
:自10000年1月0日起的天数。您可以使用Java的ToutString
进行一些修改:
var d = new Date(dateMATLAB*86400000-62167305600000);
var n = d.toUTCString();
其中dateMATLAB
是MATLAB的日期输出。值6216730560000
是从第0年到1970年之间经过的毫秒数。以你为例,
var d = new Date(732161.8561226851*86400000-62167305600000);
var n = d.toUTCString();
将输出
Mon, 02 Aug 2004 20:32:48 GMT
这张照片是:
2004-08-02T20:32:49Z
我相信这是正确的,并看到它使用了早已过时的Date
类。所以我想给出同样答案的现代版本。除了避免使用老式的类之外,它还有一个优点,就是将大部分计算留给库方法,从而提供更清晰的代码
我发现值得注意的是,我们以毫秒的精度得到了与Matlab相同的结果。如果结果差一毫秒,它将被打印为2004-08-02T20:32:48.999Z
或2004-08-02T20:32:49.001Z
链接:解释如何使用java.time
这张照片是:
2004-08-02T20:32:49Z
我相信这是正确的,并看到它使用了早已过时的Date
类。所以我想给出同样答案的现代版本。除了避免使用老式的类之外,它还有一个优点,就是将大部分计算留给库方法,从而提供更清晰的代码
我发现值得注意的是,我们以毫秒的精度得到了与Matlab相同的结果。如果结果差一毫秒,它将被打印为2004-08-02T20:32:48.999Z
或2004-08-02T20:32:49.001Z
链接:解释如何使用
java。时间
似乎需要几年的时间。这个数字除以365.25大约是2004.5499。MATLAB的序列日期表示的似乎是年数。这个数字除以365.25大约是2004.5499