tl;dr
LocalDate.now( ZoneId.of( "Pacific/Auckland" ) )
.with( TemporalAdjusters.previous( DayOfWeek.SUNDAY ) )
java.time
The modern approach uses the java.time classes.
请注意:TIMESTAMP在MySQL中的数据类型位于UTC的时间区。
相比之下,如果某一时间区至关重要,则你希望具体注明具体日期。 时间区对于确定日期至关重要。 无论何时,这个日期都因区而异。 例如,在 Paris France 是一个新日,而Montréal 魁北克。
<<https://en.wikipedia.org/wiki/List_of_tz_zones_by_name”rel=“nofollow noreferer”>propertime zones name,其格式为continent/region
,例如https://en.wikipedia.org/wiki/America/Montreal” rel=nofollow norecerer">。 从未使用过3-4字母缩略语,例如EST
或IST
,因为它们是not真正的时区,不是标准化的,甚至不是独一无二的。
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
如果是星期日,请上周休息。 使用<代码>TemporalAdjuster,载于。 TemporalAdjusters
(note plural) category. 缩略语 object。
LocalDate previousSunday = today.with( TemporalAdjusters.previous( DayOfWeek.SUNDAY ) ) ;
星期日再回来。
LocalDate startingSunday = previousSunday.minusWeeks( 1 ) ;
我们需要确切的时间,而不是整个日期。 走到今天的第一刻。 不要假设这意味着每天00:00:00。 日光节省时间(DST)等异常现象意味着,这一天可能在0:00时开始。 不要 j。
ZonedDateTime zdtStart = startingSunday.atStartOfDay( z ) ;
接下来,我们需要结束时间。 实际上,不是结束时间。 确定该周第二次结束的时间是trick的。 日常工作的共同做法是采用半开放式办法确定一个时间。 在半开放式中,起步为 Inclusive/em>,而起止步为elus/em>。 这意味着,我们要在星期日的第一刻开始,直到,但不包括下周日的第一个时间。
请注意,由于指挥已经关闭,你无法使用<条码>BETWEEN,这意味着开始和结束指挥都是包容性的。
ZonedDateTime zdtStop = previousSunday.atStartOfDay( z ) ;
MySQL的询问将在万国邮联进行。 因此,请从<代码>中提取<代码>Instant的物体,因为按照定义,这些物体始终在万国邮联内。
Instant start = zdtStart.toInstant() ;
Instant stop = zdtStop.toInstant() ;
如果您的JDBC的司机支持JDBC 4.2,并且以后,你可以通过PreparedStatement:setObject
和ResultSet:getObject
。
这份法典未经测试,但应指明你的方向。
String sql = "SELECT * from tbl_ WHERE col_ >= ? AND col_ < ? ; " ;
PreparedStatement pstmt = conn.prepareStatement( sql ) ;
pstmt.setObject( 1 , start ) ;
pstmt.setObject( 2 , stop ) ;
ResultSet rs = pstmt.executeQuery() ;
…
Instant instant = rs.getObject( … , Instant.class ) ;
About java.time
legacy。 java.util。 日期
<<>>,rel=“nofollow noretinger”>Calendar
, &rel=“nofollow noreting”code
Joda-time Project,现载于,为向。 班级。
更多学习,见 rel=“nofollow noreferer”>Oracle Tutorial 。 此外,还寻找Stack Overflow的许多实例和解释。 具体内容是JSR 310。
获取ava。 时间段
>ThreeTen-Extra 项目延长java.time 额外课程。 该项目是今后可能增加 j的一个证明。 时间。 http://www. 33ten.org/ iii/extra/apidocs/org/ 3ten/extra/Interval.html