GVKun编程网logo

如何使用模式格式化java.time.LocalDateTime和java.time.LocalDate?(格式化时间java)

10

在本文中,我们将给您介绍关于如何使用模式格式化java.time.LocalDateTime和java.time.LocalDate?的详细内容,并且为您解答格式化时间java的相关问题,此外,我们还

在本文中,我们将给您介绍关于如何使用模式格式化java.time.LocalDateTime和java.time.LocalDate?的详细内容,并且为您解答格式化时间java的相关问题,此外,我们还将为您提供关于Android java.time.LocalDateTime、Groovy的TimeCategory与LocalDate和LocalDateTime、Java 8 date/time type `java.time.LocalDateTime` not supported by default:日期序列化问题、Java 8 – Convert Epoch time milliseconds to LocalDate or LocalDateTime的知识。

本文目录一览:

如何使用模式格式化java.time.LocalDateTime和java.time.LocalDate?(格式化时间java)

如何使用模式格式化java.time.LocalDateTime和java.time.LocalDate?(格式化时间java)

在下面的摘录中,该属性$F属于类java.time.LocalDateTimejava.time.LocalDate

<textField pattern="EE. dd.MM.yyyy">    <reportElement...>    </reportElement>    <textFieldExpression><![CDATA[$F{theLocalDateTime}]]></textFieldExpression></textField>

如何pattern在jasper报表中使用textField设置此属性的格式 ?

答案1

小编典典

要在当前版本的jasper-report 中将 pattern属性 用于Date /
Time对象,您需要一个java.util.Date类或它的子类之一。

解决的办法是转换java.time.LocalDatejava.time.LocalDateTime

转换为 java.util.Date

java.time.LocalDate

<textField pattern="EE. dd.MM.yyyy">    <reportElement...>    </reportElement>    <textFieldExpression><![CDATA[java.util.Date.from($F{theLocalDate}.atStartOfDay(java.time.ZoneId.systemDefault()).toInstant())]]></textFieldExpression></textField>

java.time.LocalDateTime

<textField pattern="EE. dd.MM.yyyy">    <reportElement...>    </reportElement>    <textFieldExpression><![CDATA[java.util.Date.from($F{theLocalDateTime}.atZone(java.time.ZoneId.systemDefault()).toInstant())]]></textFieldExpression></textField>

[转换为

java.sql.Timestamp](http://codingdict.com/questions/100061)

java.time.LocalDate

<textField pattern="EE. dd.MM.yyyy">    <reportElement...>    </reportElement>    <textFieldExpression><![CDATA[java.sql.Timestamp.valueOf($F{theLocalDate}.atStartOfDay())]]></textFieldExpression></textField>

java.time.LocalDateTime

<textField pattern="EE. dd.MM.yyyy">    <reportElement...>    </reportElement>    <textFieldExpression><![CDATA[java.sql.Timestamp.valueOf($F{theLocalDateTime})]]></textFieldExpression></textField>

注意:
应用模式始终是首选的解决方案,特别是在导出到excel时,因为正确的类将传递给poi(因此excel会将列识别为日期,并应用与模式相同的格式)

Android java.time.LocalDateTime

Android java.time.LocalDateTime

我正在编写一个Android应用程序,它应该通过我在服务器端开发的HTTP REST API接收java.time.LocalDateTime对象.

问题是Android仍然在Java 7中,而java.time仅在Java 8中可用.

话虽如此,在Android中表示包含日期和时间的变量的最佳方式是什么?我不想使用sql.timestamp.

谢谢!

解决方法:

为什么要使用Java 8之前的日期或日历,而Joda-time的Android版本(非常接近Java8日期)可用?

以下是GIT回购/网站的更多信息:

https://github.com/dlew/joda-time-android

Groovy的TimeCategory与LocalDate和LocalDateTime

Groovy的TimeCategory与LocalDate和LocalDateTime

是否有关于如何在 java8 LocalDate和LocalDateTime中使用TimeCategory(或等效)的示例或参考?我发现的所有代码片段都引用了我试图避免的java.util.Date.

解决方法

使用 Java 8 LocalDate操作非常简单:

LocalDate.Now().plusDays(2)

我不确定TimeCategory会让你获得什么?

你可以很简单地将它破解到MetaDlass的LocalDate和LocalDatTime:

import groovy.time.*
import java.time.*

LocalDate.MetaClass {
    plus { Duration d ->
        delegate.plusYears(d.years)
                .plusMonths(d.months)
                .plusDays(d.days)
    }
}

LocalDateTime.MetaClass {
    plus { Duration d ->
        delegate.plusYears(d.years)
                .plusMonths(d.months)
                .plusDays(d.days)
                .plusHours(d.hours)
                .plusMinutes(d.minutes)
                .plusSeconds(d.seconds)
    }
}

use(TimeCategory) {
    LocalDateTime.Now() + 4.days
}

Java 8 date/time type `java.time.LocalDateTime` not supported by default:日期序列化问题

Java 8 date/time type `java.time.LocalDateTime` not supported by default:日期序列化问题

Java 8 date/time type `java.time.LocalDateTime` not supported by default:日期序列化问题

jackson默认不支持java8 LocalDateTime的序列化和反序列化,那控制台也显示了解决的办法,只不过并不全。

解决办法一:将实体类中的LocalDateTime转为Date类型

解决办法二:

<dependency>
	<groupId>com.fasterxml.jackson.datatype</groupId>
	<artifactId>jackson-datatype-jsr310</artifactId>
	<version>2.13.0</version>
</dependency>

通过注解指定

@TableField("update_time")
    @ApiModelProperty("更新时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") //此注解用来接收字符串类型的参数封装成LocalDateTime类型
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8", shape = JsonFormat.Shape.STRING) //此注解将date类型数据转成字符串响应出去
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)		// 反序列化
    @JsonSerialize(using = LocalDateTimeSerializer.class)		// 序列化
    private LocalDateTime updateTime;
    @TableField("create_time")
    @ApiModelProperty("添加时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") //此注解用来接收字符串类型的参数封装成LocalDateTime类型
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone = "GMT+8", shape = JsonFormat.Shape.STRING) //此注解将date类型数据转成字符串响应出去
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)		// 反序列化
    @JsonSerialize(using = LocalDateTimeSerializer.class)		// 序列化
    private LocalDateTime createTime;

 

配置全局

@Configuration
public class MvcConfig implements WebMvcConfigurer {
    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        objectMapper.registerModule(new JavaTimeModule());
        messageConverter.setObjectMapper(objectMapper);
        converters.add(0, messageConverter);
    }
}

解决办法三:

用阿里的FastJson替换ObjectMapper

 

 

 

Java 8 – Convert Epoch time milliseconds to LocalDate or LocalDateTime

Java 8 – Convert Epoch time milliseconds to LocalDate or LocalDateTime

https://mkyong.com/java8/java-8-convert-epoch-time-milliseconds-to-localdate-or-localdatetime/


In Java 8, we can use Instant.ofEpochMilli().atZone() to convert the epoch time in milliseconds back to LocalDate or LocalDateTime

Epoch time to LocalDate


LocalDate ld = Instant.ofEpochMilli(epoch).atZone(ZoneId.systemDefault()).toLocalDate();

Epoch time to LocalDateTime


LocalDateTime ldt = Instant.ofEpochMilli(epoch).atZone(ZoneId.systemDefault()).toLocalDateTime();

P.S Epoch time is the number of seconds that have elapsed since 0:00:00 UTC on 1 January 1970

1. Epoch Time -> LocalDate || LocalDateTime

Get the current epoch time in long value and convert it back to LocalDate or LocalDateTime.

Java8ConvertEpoch.java

package com.mkyong.java8;

import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;

public class Java8ConvertEpoch {

    public static void main(String[] args) {

        long epoch = Instant.now().toEpochMilli();
        System.out.println(epoch);

        LocalDate ld = Instant.ofEpochMilli(epoch)
                .atZone(ZoneId.systemDefault()).toLocalDate();
        System.out.println(ld);

        LocalDateTime ldt = Instant.ofEpochMilli(epoch)
                .atZone(ZoneId.systemDefault()).toLocalDateTime();
        System.out.println(ldt);

    }

}



Output


1581420629955
2020-02-11
2020-02-11T19:30:29.955

References

  • Wikipedia – Epoch Time
epoch time java 8 java.time localdate localdatetime utc

今天关于如何使用模式格式化java.time.LocalDateTime和java.time.LocalDate?格式化时间java的讲解已经结束,谢谢您的阅读,如果想了解更多关于Android java.time.LocalDateTime、Groovy的TimeCategory与LocalDate和LocalDateTime、Java 8 date/time type `java.time.LocalDateTime` not supported by default:日期序列化问题、Java 8 – Convert Epoch time milliseconds to LocalDate or LocalDateTime的相关知识,请在本站搜索。

本文标签: