标签: jsr310

当我们的jar附带的类被添加到Java标准库时会发生什么?

我正在考虑将JSR-310的一小部分添加javax.time.Duration到我们的库中.

这目前完美无缺.

但JSR-310计划集成在Java 8中!在Java 8上执行我们的应用程序时,如果javax.time.Duration标准库中有一个类,并且我们的jar文件附带了相同的类,会发生什么?

其中一个课程会被默默忽略吗?(哪一个?)当Java 8 VM尝试从我们的库加载类时会出现错误吗?

我需要注意哪些兼容性问题?

java time compatibility java-8 jsr310

4
推荐指数
1
解决办法
149
查看次数

是否有Oracle的官方文档说我们不应该在新项目中使用java.util.Date

我正在公司的Java 8中编写新项目.我建议使用Java 8日期时间API,但我的一位同事说新的日期时间API运行缓慢.

这是真的吗?另外,我想从Oracle获得一些官方文档,其中提到您不应该java.util.Date在新项目中使用.

java jsr310 java-time

4
推荐指数
2
解决办法
141
查看次数

在 spring 中使用 JSR310 java.time 时序列化日期,即时到 ISO 8601

我正在用 JSR310 替换 JodaTime,并且 JodaTime() 的模块工作正常。

我正在尝试在 spring-boot 应用程序中重新配置日期的序列化。

我不能同时保留两者,所以我正在寻找一种将我的日期序列化/反序列化为 ISO 8601 的方法。

我遵循了这里的建议,但这没有帮助:http : //lewandowski.io/2016/02/formatting-java-time-with-spring-boot-using-json/

这是我JacksonConfig.javaobjectMapper

@Configuration
public class JacksonConfig extends RepositoryRestMvcConfiguration {

    private static final Logger logger = LoggerFactory.getLogger(JacksonConfig.class);
    public static final DateTimeFormatter FORMATTER = ofPattern("dd::MM::yyyy");

    @Bean
    // Override and Primary due to bug: https://github.com/spring-projects/spring-boot/issues/6529
    @Override
    @Primary
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);
        mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        JavaTimeModule javaTimeModule = new JavaTimeModule();
        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer());
        javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer());
        mapper.registerModule(javaTimeModule); …
Run Code Online (Sandbox Code Playgroud)

serialization spring jackson jsr310 spring-boot

3
推荐指数
1
解决办法
3257
查看次数

LocalDate:等于与 isEqual

LocalDate在 Java 中有两个类似的方法equalsisEqual.
它们之间有什么区别?
当他们输出不同的结果时?

java equals jsr310 java-time localdate

3
推荐指数
1
解决办法
188
查看次数

Kotlin的javax.time

我尝试使用代码在Kotlin中使用javax.time:

import javax.time.calendar.LocalDate

fun main(args: Array<String>){
  println("Today is ${LocalDate.now()}");
}
Run Code Online (Sandbox Code Playgroud)

并得到编译错误:

C:\kotlin-hello-world>kotlinc hello.kt -include-runtime -d hello.jar
hello.kt:1:14: error: unresolved reference: time
import javax.time.calendar.LocalDate
             ^
Run Code Online (Sandbox Code Playgroud)

而谷歌搜索结果显示,在科特林javax.time不能使用,人们推荐使用ThreeTenBPThreeTenABP如果机器人.我的用例是在Kotlin的服务器端使用javax.time类.

但是当我尝试使用TreeTenBP时,我必须导入org.threeten.bp.LocalDate而不是javax.time.calendar.LocalDateTreeTen*不是JSR-310的实现而是后端口.

除了那些backport库之外,还有什么方法可以在Kotlin中使用javax.time吗?如果是这样,如何配置这样的环境或如何编写这样的代码?

jodatime java-8 jsr310 kotlin

2
推荐指数
1
解决办法
759
查看次数

Java 8 异常:com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer 没有默认(无参数)构造函数

我有一个具有字段的模型类:

 @JsonDeserialize(using = InstantDeserializer.class)
 @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
 private OffsetDateTime offsetDt;
Run Code Online (Sandbox Code Playgroud)

当这个模型的请求发送到服务器时,我的控制器抛出异常:

Caused by: java.lang.IllegalArgumentException: 
Class com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer 
has no default (no arg) constructor
Run Code Online (Sandbox Code Playgroud)

pom.xml 具有 2.8.11 版本的依赖项:

 <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我知道这是由 @JsonDeserialize 需要无参数构造函数引起的,但是有解决方法吗?非常感谢。

java json jackson jsr310 fasterxml

2
推荐指数
1
解决办法
3664
查看次数

是否有可能在Java中改变从1970年到2008年的基本毫秒参考时间(如JSR-310)

我希望能够在Java中更改1970年到2008年的基本毫秒参考,这样我就可以节省数据库中的空间和唯一的ID.

最好是Joda-Time.

所谓的Java 7版本中即将推出的jsr-310实现了它.

在此链接的"离散时间轴"部分中,它指出毫秒的计数已从1970年改为2008年

http://today.java.net/pub/a/today/2008/09/18/jsr-310-new-java-date-time-api.html


我能看到的唯一其他选项是每次需要查找记录时以数学方式实现它.

例如

DateTime dt = new DateTime();  
long now = dt.getMillis();

DateTime dt2 = new DateTime(2008, 1, 1, 0, 0, 0, 0);  
long then = dt2.getMillis();

long smallerDate = now - then;
Run Code Online (Sandbox Code Playgroud)

较小的日期将存储在DB中

- 编辑 -

所以我误读了JSR-310,这是不可能的.

有更好的方法来节省空间,然后处理成千上万的请求计算多头的头痛.

我想将长记录为日期,因为我永远不会知道将数据库移动到哪里,也许MySQL => Oracle.

所以我不想要时间戳,我只想要BigInts.

java datetime jodatime java-7 jsr310

1
推荐指数
1
解决办法
345
查看次数

Java jsr310:日期和时间之间的差异

有很多SO问题涉及计算Java中两个日期或两个日期之间的差异.许多答案指出了核心Java Date类的问题,并建议使用Jodatime,但AFAIK,没有任何建议使用jsr310如何做到这一点.

那么,有什么方法可以在jsr310中计算两个日期或两个日期之间的差异吗?


作为参考,以下问题可以解决此问题:

在核心Java中:

在Jodatime:

java datetime date jsr310

1
推荐指数
1
解决办法
2911
查看次数

如何使方法通用以使用LocalDate和LocalDateTime?

我有一个Java方法如下:

private static boolean isDateBetweenRange(DataSet obj, MyClass dataSource, ConditionContext context) {
    FilterContext fc = dataSource.getData();

    LocalDate dateFieldToCheck = obj.getDate(fc.getDateField()).toInstant()
                                   .atZone(ZoneId.systemDefault()).toLocalDate();
    LocalDate minDate = fc.getMinDateValue();
    LocalDate maxDate = fc.getMaxDateValue();

    if (minDate == null || maxDate == null) {
        minDate = context.getStartDate().toInstant().atZone(ZoneId.systemDefault())
                    .toLocalDate();
        maxDate = context.getEndDate().toInstant().atZone(ZoneId.systemDefault())
                    .toLocalDate();
    }

    boolean result = (dateFieldToCheck.isAfter(minDate) || dateFieldToCheck.isEqual(minDate))
            && (dateFieldToCheck.isBefore(maxDate) || dateFieldToCheck.isEqual(maxDate));

    return result;
}
Run Code Online (Sandbox Code Playgroud)

我也想做同样的逻辑LocalDateTime.LocalDateTime如果我重载方法,它将是完全相同的代码.

如何使该方法通用,LocalDateLocalDateTime使用泛型或任何其他机制?

我如何根据我的类型制作context.getXXXDate()... toLocalDate()toLocalDateTime()使用通用代码?

polymorphism java-8 jsr310 java-time

1
推荐指数
1
解决办法
955
查看次数

使用Spring Data REST时如何更改Jacksons Configuration?

我正在尝试配置Jackson以ISO 8601格式显示JSR 310瞬间.

@Configuration
class Jackson {

    @Bean
    static ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();
        objectMapper.disable( SerializationFeature.WRITE_DATES_AS_TIMESTAMPS );
        return objectMapper;
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,这不是一个独特的Bean,实际上我只想禁用这一个设置.所以我真的不想创建ObjectMapper,就像在它上面指定一个设置一样.

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.actuate.autoconfigure.EndpointWebMvcHypermediaManagementContextConfiguration$MvcEndpointAdvice': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.fasterxml.jackson.databind.ObjectMapper org.springframework.boot.actuate.autoconfigure.EndpointWebMvcHypermediaManagementContextConfiguration$MvcEndpointAdvice.mapper; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.fasterxml.jackson.databind.ObjectMapper] is defined: expected single matching bean but found …
Run Code Online (Sandbox Code Playgroud)

java jackson jsr310 spring-data-rest spring-boot

0
推荐指数
2
解决办法
7307
查看次数