java - MATLAB 中的 datestr 函数到 Java

标签 java matlab date datetime

我的文件中有一个数字格式,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.999Z2004-08-02T20:32:49.001Z >.

链接: Oracle tutorial: Date Time解释如何使用java.time

关于java - MATLAB 中的 datestr 函数到 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51328378/

相关文章:

java - 如何将 "2019-04-11T05:00:54.000+01:00"转换为 dd/MM/yyyy hh :mm format

php - Mysql 使用 where in 子句查找日期,或最接近数组中日期的日期

java - 正则表达式组合以完全像 HTML 呈现器一样格式化字符串

java - Spring boot 使用的默认值 - spring-boot-starter-parent

java - Matlab通过Java驱动程序从MongoDB集合中删除所有文档

c++ - Matlab 2013a + MEX C 程序

matlab - 我如何获得具有函数 bar3 和每个条的不同宽度的条?

apache-flex - 如何使用 ActionScript 获取特定日期的星期几的名称?

java - 模块化项目使用 jOpenDocument 引发 InvalidModuleDescriptorException

java - 为什么 Android Studio 将一些原始 Kotlin 类型转换为条件/安全运算符?