我有一个每周统计系统,我想检查统计数据最后一次更新是否是上周.如果是的话,我想清除它.
目前,日期存储在LocalDate:
LocalDate lastUpdate;
Run Code Online (Sandbox Code Playgroud)
我已经有了这样的日常统计数据:
if(lastUpdate.isBefore(LocalDate.now())
{
clearDailyStatistics();
}
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
if(/* something here? */)
{
clearWeeklyStatistics();
}
Run Code Online (Sandbox Code Playgroud)
所以,问题是:我如何比较LocalDate对象的周数?不需要形成周的不同"标准" - 周一到周日将被使用(如Java DayOfWeek课程已经使用的那样).
Jooq目前不支持JSR 310类型,直到v3.8才会支持.
使用简单的转换器通常可以工作,除了某些类型,例如postgres' TIMESTAMP WITH TIME ZONE,它需要自定义绑定.所以我尝试编写一个,但生成的XxxRecord类仍然使用Timestamp数据类型作为TIMESTAMP WITH TIME ZONE我的数据库中的字段.
我需要在下面的代码中更改以将postgres' TIMESTAMP WITH TIME ZONE视为Instantjooq生成的类中的内容?
public class TimestampConverter implements Converter<Timestamp, Instant> {
@Override public Instant from(Timestamp ts) {
return ts == null ? null : ts.toInstant();
}
@Override public Timestamp to(Instant instant) {
return instant == null ? null : Timestamp.from(instant);
}
@Override public Class<Timestamp> fromType() { return Timestamp.class; }
@Override public Class<Instant> toType() { return …Run Code Online (Sandbox Code Playgroud) 这一年2014我想要展示4和为2029 -> 9
我知道如何格式化4位=> yyyy和两位=>yy
但我无法理解,如何用最后一个数字来做
DateTimeFormatter.ofPattern("yMMdd"); //returns 20151020. I want just 51020
Run Code Online (Sandbox Code Playgroud) 我无法理解DecimalStyle如何影响我使用DateTimeFormatter进行格式化/解析.如果我尝试:
date = LocalDateTime.now();
DecimalStyle ds = DecimalStyle.of(Locale.GERMAN);
formatter = DateTimeFormatter.ofPattern("yyyy").withDecimalStyle(ds.withDecimalSeparator('?'));
text = formatter.format(date);
System.out.println("DecimalStyle: " + text);
Run Code Online (Sandbox Code Playgroud)
我不应该得到类似的东西:输出中的2.016?我实际看到的是,无论我设置什么参数ds,它都不会影响实际格式化的String.这是java 8 API,不幸的是,在互联网上找不到多少.
我想根据当前时间得到15分钟的时间表.
例如:
时间表适用于every 15 minutes.
即12比1被分成四个时间帧 [ 12:00 to 12:15, 12:16 to 12:30, 1:31 to 12:45, 12:46 to 1:00]
如果当前时间是12:34平均值,我需要返回时间帧12:31 to 12:45
我们可以使用Java 8 Date和Time API轻松完成这项工作吗?
我需要创建用于解析时间戳的格式化程序,并带有可选的毫秒,微米或毫微秒的分数。
例如,根据我的需要,我看到了以下机会:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.append(DateTimeFormatter.BASIC_ISO_DATE)
.appendLiteral('-')
.append(DateTimeFormatter.ISO_LOCAL_TIME)
.appendOffset("+HH:mm", "Z")
.toFormatter();
Run Code Online (Sandbox Code Playgroud)
或者也可以使用appendFraction(field, minWidth, maxWidth, decimalPoint)。
但是,在这些情况下,可以解析任意数量的小数(最多9个或maxWidth)的时间戳。如何实现我们只能在逗号后解析(可选)仅3、6或9个数字?
应该可以解析以下时间部分:
HH:mm:ss.SSSHH:mm:ss.SSSSSSHH:mm:ss.SSSSSSSSS但无法解析:HH:mm:ss.SSSS。
我的格式有时间戳2017-18-08 11:45:30.345.
我想将它转换为纪元时间,所以我在下面做:
String timeDateStr = "2017-18-08 11:45:30.345";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-dd-MM HH:mm:ss.SSS");
ZonedDateTime zdt = ZonedDateTime.parse(timeDateStr, dtf);
System.out.println(zdt.toInstant().toEpochMilli());
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
java.time.format.DateTimeParseException:无法解析文本'2017-18-08 11:45:30.345':无法从TemporalAccessor获取ZonedDateTime
我也尝试过不同的格式,但仍然会出错.
我有以下代码抛出DateTimeParseException:
String dateString = "Jul 20 09:32:46"
DateTimeFormatter formatter=DateTimeFormatter.ofPattern("L d HH:mm:ss");
return ZonedDateTime.parse(dateString, formatter);
Run Code Online (Sandbox Code Playgroud)
根据文档,您将观察到这Jul是角色的示例L.
但是,异常消息是:
java.time.format.DateTimeParseException:无法在索引0处解析文本"Jul"
我错过了什么?
如果我做
import java.time.Instant;
...
Instant instant = Instant.parse("2018-01-02T18:14:59.000+01:00")
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
Caused by: java.time.format.DateTimeParseException: Text '2018-06-19T23:00:00.000+01:00' could not be parsed at index 23
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1777)
Run Code Online (Sandbox Code Playgroud)
但是如果我这样做
Instant instant = Instant.parse("2018-06-19T23:00:00.000Z");
Run Code Online (Sandbox Code Playgroud)
一切正常。
我想念什么?第一次字符串有什么问题?
我正在使用Java 8,
在我们的代码的早期,sdf.setTimeZone(TimeZone.getTimeZone("PDT"));由于PDT不是有效的ZoneId ,我们曾 用来转换到失败的美国太平洋地区(未引发任何错误,而是转换为默认时区)。
因此,我寻找值中setTimeZone(TimeZone.getTimeZone("PST"));也不可用的那个TimeZone.getAvailableIDs()。
最后我最终使用 sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
现在,我们的一位朋友曾经使用setTimeZone(TimeZone.getTimeZone("PST"));过转换为美国太平洋时区,并且转换正常进行。
问题是
TimeZone.getTimeZone("PST");和之间有什么区别TimeZone.getTimeZone("America/Los_Angeles");
哪个更好用?