Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
java从双历元到日期时间_Java_Date_Parsing_Time - Fatal编程技术网

java从双历元到日期时间

java从双历元到日期时间,java,date,parsing,time,Java,Date,Parsing,Time,在java中如何将日期时间从double解析为datetime?在c#中,从 建议使用java进行解析 例如: 44233.8647553819// --> date: 2021-02-06 20:45:14 问题是,这种存储时间戳的机制很愚蠢,而C#通过混合不同的时间概念来实现。它做了您显然想要的事情,但这不是一件好事——这些类型的API很容易出错 在java中,存在相同的API,但只允许指定整数天-因此,无法保存.8647553819部分-必须直接应用该部分 但如果不回答更多

在java中如何将日期时间从double解析为datetime?在c#中,从

建议使用java进行解析

例如:

    44233.8647553819// --> date: 2021-02-06 20:45:14

问题是,这种存储时间戳的机制很愚蠢,而C#通过混合不同的时间概念来实现。它做了您显然想要的事情,但这不是一件好事——这些类型的API很容易出错

在java中,存在相同的API,但只允许指定整数天-因此,无法保存
.8647553819
部分-必须直接应用该部分

但如果不回答更多关于你在地球上的位置的问题,这是不可能的

让我们从“天”部分开始:

double raw = 44233.8647553819;
long days = (long) raw;
double fraction = raw - days;

LocalDate epoch = LocalDate.of(1899, 12, 30);
LocalDate date = epoch.plusDays(days);
System.out.println(date);
> 2021-02-06 - so far, so good
现在把
.8647553819
转换成一个特定的时间要复杂得多。如果那天只有23个小时呢?如果有25小时呢?这种表达系统无法处理任何这些问题,而且在准确性方面也存在问题;双打是为准确度而不是速度而优化的。所以,这是一个尽力而为的交易

double maxSeconds = LocalTime.MAX.toSecondOfDay();
int seconds = (int) (maxSeconds * fraction);
LocalTime time = LocalTime.ofSecondOfDay(seconds);
LocalDateTime stamp = date.atTime(time);
System.out.println(stamp);
> 2021-02-06T20:45:14

这是一个愚蠢的系统,我再怎么强调也不为过,但是,你有了它。

这能回答你的问题吗?从链接问题的公认答案中得出的相同方法在这里也适用。@zappee double to date是可以的,但是小时分秒?你输了吗approach@FreeBird好的,有一些方法,但在java中并没有添加double的方法,关于小时、分钟、秒的信息是lose@BasilBourque这个答案是可以接受的:我在这门课上用过方法: