我的文件中有一个数字格式,Matlab 将其转换为日期字符串。该格式是结构化的,例如 732161.8561226851。
当我在 Matlab 中执行 datestr(732161.8561226851)
时,我得到:
ans =
'02-Aug-2004 20:32:49'
我希望实现相同的输出,但作为 Java 函数。不过,我以前从未见过这种格式,并且不确定所采取的转换过程。
将其转换为日期字符串以便我可以创建 Java 函数的过程是什么?
最佳答案
// Matlab epoch is January 0, 0000, so subtract 1 day from January 1:
Instant matlabEpoch = Instant.parse("0000-01-01T00:00:00Z").minus(1, ChronoUnit.DAYS);
Instant inst = matlabEpoch.plusMillis(
Math.round(732161.8561226851 * TimeUnit.DAYS.toMillis(1)));
System.out.println(inst);
打印:
2004-08-02T20:32:49Z
我相信@Riley Jacob’s answer是正确的,并且看到它使用了早已过时的 Date
类。所以我想给出相同答案的现代版本。除了避免使用老式类之外,它还具有将大部分计算留给库方法的优点,这反过来又提供了更清晰的代码。
我发现值得注意的是,我们以毫秒精度得到了与 Matlab 相同的结果。如果结果相差一毫秒,则会打印为 2004-08-02T20:32:48.999Z
或 2004-08-02T20:32:49.001Z
>.
链接: Oracle tutorial: Date Time解释如何使用java.time
。
关于java - MATLAB 中的 datestr 函数到 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51328378/