Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB到Java中的datestr函数_Java_Matlab_Date_Datetime - Fatal编程技术网

MATLAB到Java中的datestr函数

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日起的天数。您可以

我在一个文件中有一个数字格式,Matlab将其转换为日期字符串。例如,格式的结构为732161.8561226851

当我在Matlab中执行
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