JAVA中两次添加日期
我想在不使用任何其他库(java.date、LocalTime..)的情况下添加两次(java.sql.Time),我总是把时间控制在1小时以内
java.sql.Time
Time heureDebut="09:00:00";
Time heureFin="00:15:00";
long heureDebuts = heureDebut.getTime()+heureFin.getTime();
Time tt = new Time(heureDebuts);
//I get 08:15:00 as a result
# 1 楼答案
您可以按如下方式使用此伪代码:
# 2 楼答案
爪哇。时间
你说过你不想使用库类,只想使用
java.sql.Time
。对于你和其他阅读本文的人,我建议你不要使用Time
类。第一,这门课已经过时很久了,第二,这门课的设计糟糕透顶,第三,这门课对你来说是错误的,第四,我不相信它可以用于这个目的。你可能会从Amine ABBAOUI的答案中得到这样的印象,即它是可能的,但这个答案在两个方面是欺骗的:它使用的方法已经被弃用了23年半,我建议任何人都不应该这样做;它在Time
课堂之外做所有的工作爪哇。与时间共事是如此美好。自Java8以来,它就被内置到Java中,并被后移植到Java6和Java7中
我不太清楚,但我假设
09:00:00
是一个开始时间00:15:00
是一个持续时间,你想通过将持续时间加到开始时间来计算结束时间输出为:
如果从数据库中获取
Time
对象如果从一个将开始时间和持续时间存储为
time
数据类型(这是不正确的)的SQL数据库中获取java.sql.Time
对象,并且无法控制数据库设计:从数据库中获取LocalTime
对象。将duration转换为Duration
对象,然后像我之前做的那样继续。例如:由于
LoalTime
与Time
相对的LoalTime
没有连接到任何时区,上面的转换将为您提供预期的结果如果你不想使用java。时间
如果你不想使用java。时间(不是我能理解的),我最好的建议是你用手做所有事情,不要使用任何图书馆课程。这不是我推荐的解决方案,这不是一个好的解决方案,但它并不像试图让过时的、设计糟糕的
Time
类以它从未被设计过的方式运行那样糟糕你的代码出了什么问题
除了无法将字符串分配给}是前一天晚上23:15:00(1969年12月31日)。您使用的
Time
对象之外,还存在时区偏移问题。您的时区似乎是1970年1月1日UTC偏移量+01:00。ATime
是1970年1月1日的Ajava.util.Date
。虽然没有很好的文档记录,但时间在JVM的默认时区内。所以你所在时区的09:00:00
与UTC 08:00:00相同。而{getTime
方法获取自00:00:00UTC以来的毫秒数。所以在第一种情况下,你得到了8小时的毫秒,在第二种情况下,你得到了一个负值,等于减去四分之三小时。你加上这些,得到了足够7小时15分钟的毫秒数。你把它们反馈到一个Time
对象中,得到了UTC的07:15:00,它在你的时区打印为08:15:00链接
解释如何使用java。时间到了
# 3 楼答案
这似乎是个问题