当前位置: 首页 > 知识库问答 >
问题:

Java语言sql。下班时间

公孙慎之
2023-03-14

Hi在DB中我有四列来存储时间窗口。这将允许用户存储美国东部时间9:00到5:00。

现在我需要用java解析这些信息。

java.sql.Time startTS = rs.getTime("begin_TIME ");
LocalTime localTime = startTS.toLocalTime();

偏移量可以使用:OffsetTime of(LocalTime time,ZoneOffset offset)

从我所看到的,我们无法将zoneid转换为zone偏移,那么我如何9:00 est(存储在时间和区域列中)从sqlserver到java。

DB Table:
 begin_TIME time NOT NULL,
 begin_TIME_ZONE varchar(5) NOT NULL,
 end_TIME time NOT NULL,
 end_TIME_ZONE varchar(5) NOT NULL,

在后端,我需要检查请求是否在窗口中,请求时间转换为ZonedDateTime,开始和结束需要来自DB:

public boolean compare(ZonedDateTime dateTime, OffsetTime startTime, OffsetTime endTime) {
    OffsetTime offsetTime = dateTime.toOffsetDateTime().toOffsetTime();
    int start = offsetTime.compareTo(startTime);
    int end = offsetTime.compareTo(endTime);
    return start >= 0 && end <= 0;
}

共有1个答案

梁学真
2023-03-14

如果我对您的情况理解正确,这种比较方法应该能够帮助您:

public boolean compare(ZonedDateTime dateTime, LocalTime start, ZoneId startTz,
        LocalTime end, ZoneId endTz) {
    ZonedDateTime startZonedDateTime = start.atDate(dateTime.toLocalDate()).atZone(startTz);
    ZonedDateTime endZonedDateTime = end.atDate(dateTime.toLocalDate()).atZone(endTz);
    return (! dateTime.isBefore(startZonedDateTime)) && (! dateTime.isAfter(endZonedDateTime));
}

我正在使用提供的ZonedDateTime的日期部分来确定是否要在夏令时生效的日期进行比较。我这样选择是因为Java需要一个日期才能在时区可能有夏令时时将本地时间转换为分区或偏移时间。

可以像在您的版本中一样比较OffsetTime(忽略日期)对象,但我发现比较ZonedDateTime对象要简单一些。它真正做的是比较相应的瞬间,所以即使时区不同,它也能很好地工作。

我相信您会为该方法提供两个区域ID对象。如果您最终在数据库中将时区存储为美国/多伦多,则可以将其直接输入到ZoneId。of()。

我真的不认为你应该坚持ESTPST。它变得太复杂和容易出错。Java可以将EST翻译为-05:00;这使您无需调整夏令时(但它确实将PST理解为America/Los_Angeles)。使用现代形式America/Toronto等。请参阅此问题的答案:如何在java中使用Timezone解决夏令时问题。

 类似资料:
  • 本文向大家介绍C语言实现航班售票系统 C语言实现航班管理系统,包括了C语言实现航班售票系统 C语言实现航班管理系统的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言航班售票系统的具体代码,供大家参考,具体内容如下 题目描述:实现一个航班售票系统,每个航班应包括以下信息:航班号、起飞地、目的地、总座位数、余票数、乘客名单等;每个乘客的信息有:乘客姓名、证件号码、座位号等。 更多学习

  • 计算机编程是一种活动也是一种文化。不幸的事实是它不是一种看重身心健康的文化。从文化/历史缘由看(例如,在机器空载的晚上工作的需要),还有因为超过市场时间的压力和程序员的缺乏,计算机程序员传统上总是过度工作。我不认为你可以相信你听到的所有故事,但我认为一周工作60小时是常见的,50小时更多的像一个最小值。这意味着实际总是比需要的时间花费得更多。这对一个好的,不仅为他们自己负责而且为他们的同事负责的程

  • 本文向大家介绍C语言实现航班订票系统,包括了C语言实现航班订票系统的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言实现航班订票系统的具体代码,供大家参考,具体内容如下 描述: 点定义两个链表,一个存储航班信息,一个存储客户信息; 进行一系列简单的增删查找; 代码如下 更多学习资料请关注专题《管理系统开发》。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐

  • 我正在使用Hibernate 3.3和Oracle 11g开发Struts 2 Framework。我的Web项目自5个月以来一直运行良好。但是最近我面临着java.sql.SQLRecoverableException:在一些空闲时间关闭连接。我将解释以下场景...我的hibernate.cfg.xml配置是 我的HibernateSessionFactory配置是 然后在运行以下代码时出错 当

  • 问题内容: 我正在尝试更好地理解它们之间的区别。我在网上找到了很多解释,但它们倾向于抽象的差异,而不是实际的含义。 我的大部分编程经验都来自CPython(动态的,解释的)和Java(静态的,编译的)。但是,我知道还有其他种类的解释和编译语言。除了可以从以编译语言编写的程序中分发可执行文件这一事实之外,每种类型是否有优点/缺点?通常,我听到人们争辩说解释语言可以交互使用,但是我相信编译语言也可以具

  • 如题,鄙人大学4年绝大多数时间学的是Java,考虑到Java出来的时间较长且jdk20开始Oracle开始收费,为避免淘汰,想再接触一下golang,请教一下大佬们,Java转golang,学习周期大概多久