java从双历元到日期时间
在java中如何将日期时间从double解析为datetime?在c#中,从 建议使用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部分-必须直接应用该部分 但如果不回答更多
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这个答案是可以接受的:我在这门课上用过方法: