在本文中,我们将给您介绍关于如何使用模式格式化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)
- 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)
在下面的摘录中,该属性$F
属于类java.time.LocalDateTime
或java.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.LocalDate
和java.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应用程序,它应该通过我在服务器端开发的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
解决方法
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:日期序列化问题
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
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
.
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
今天关于如何使用模式格式化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的相关知识,请在本站搜索。
本文标签: