首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获得自今年1月1日开始以来的小时数?

如何获得自今年1月1日开始以来的小时数?
EN

Stack Overflow用户
提问于 2015-08-13 06:35:40
回答 3查看 548关注 0票数 4

如何获得自今年1月1日开始以来的Java小时数?也就是说,1月1日的第一个小时= 0001,我能用JodaTime或任何其他库来完成这个任务吗?谢谢,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-13 06:49:18

使用内置到Java8及更高版本中的java.time包 (教程):

代码语言:javascript
运行
复制
ChronoUnit.HOURS.between(
  LocalDateTime.of(LocalDateTime.now().getYear(), 1, 1, 0, 0), 
  LocalDateTime.now())

我觉得这是自我解释

票数 5
EN

Stack Overflow用户

发布于 2015-08-13 06:50:36

使用Java8API作为日期/时间

代码语言:javascript
运行
复制
    LocalDateTime hournow = LocalDateTime.now();
    LocalDateTime startOfYear = LocalDateTime.of(hournow.getYear(), 1, 1, 0, 0);
    long hoursBetween = ChronoUnit.HOURS.between(startOfYear, hournow);
    System.out.println("hours between: " + hoursBetween);
票数 5
EN

Stack Overflow用户

发布于 2015-08-13 10:12:18

我强烈怀疑,许多用户更愿意考虑dst的影响:

代码语言:javascript
运行
复制
ZoneId zi = ZoneId.of("Europe/Paris"); // example

ZonedDateTime now = ZonedDateTime.now(zi);
ZonedDateTime start = ZonedDateTime.of(now.getYear(), 1, 1, 0, 0, 0, 0, zi);
long realDelta = ChronoUnit.HOURS.between(start, now);
System.out.println("hours between: " + realDelta); // 5386

// another way using Instant
Instant i2 = now.toInstant();
Instant i1 = start.toInstant();
System.out.println(i1); // 2014-12-31T23:00:00Z
System.out.println(i2); // 2015-08-13T09:55:53.353Z
System.out.println("duration=" + i1.until(i2, ChronoUnit.HOURS)); // 5386

到目前为止,基于没有任何时区的LocalDateTime提出的解决方案将产生不同的结果(此处仅是名义的,而不是物理的持续时间):

代码语言:javascript
运行
复制
LocalDateTime ldt2 = LocalDateTime.now();
LocalDateTime ldt1 = LocalDateTime.of(ldt2.getYear(), 1, 1, 0, 0);
long hoursBetween = ChronoUnit.HOURS.between(ldt1, ldt2);
System.out.println("hours between: " + hoursBetween); // 5385

对于java.util.GregorianCalendar,结果将与基于ZonedDateTime的Java-8相同。其他库也提供类似的结果,但我忽略了这些细节,因为理解时区对结果的影响更为重要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31981093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档