Java 将字符串格式的历元转换为不带时间戳的日期
我从API收到了大纪元时间的日期。它们是字符串格式的,我想要的是简单地将其转换为日期,不包括小时、分钟和秒,格式为dd/mm/yyyy。例如:Java 将字符串格式的历元转换为不带时间戳的日期,java,spring,spring-boot,Java,Spring,Spring Boot,我从API收到了大纪元时间的日期。它们是字符串格式的,我想要的是简单地将其转换为日期,不包括小时、分钟和秒,格式为dd/mm/yyyy。例如: String epochDate = "1590476643"; 我只是试着用时间戳转换它,我用这个逻辑得到这个结果。我得到一个1970年的日期,大纪元时间是从昨天5月26日开始的 Date d = new Date(Long.parseLong(epochDate)); Timestamp ts= new Timestamp(d.getTime(
String epochDate = "1590476643";
我只是试着用时间戳转换它,我用这个逻辑得到这个结果。我得到一个1970年的日期,大纪元时间是从昨天5月26日开始的
Date d = new Date(Long.parseLong(epochDate));
Timestamp ts= new Timestamp(d.getTime());
RESULT = 1970-01-19 10:47:56 SHOULD BE 26-05-2020
如何将字符串转换为日期和格式 您可以使用java.text包中的DateFormat和SimpleDateFormat
String epochDate = "1590476643";
Date d = new Date(Long.parseLong(epochDate));
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String epochDateString = formatter.format(d);
使用
LocalDate
仅用于存储日期,使用Instant.ofEpochSecond
进行转换
LocalDate localDate = Instant.ofEpochSecond(Long.parseLong("1590476643")).atZone(ZoneId.systemDefault()).toLocalDate();
和格式为字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
String formattedString = localDate.format(formatter);
我强烈建议您使用
java.time
并避免使用java.util
进行日期时间操作。可以将纪元秒的
字符串
转换为java.time.LocalDate
如下所示:
public static void main(String[] args) {
// you seem to receive a datetime in epoch seconds
String epochDate = "1590476643";
long epochDateAsLong = Long.parseLong(epochDate);
// so create an object representing a moment in time from the epoch seconds as long
Instant instant = Instant.ofEpochSecond(epochDateAsLong);
// create a LocalDateTime object from that instant and apply a desired time zone
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.of("UTC"));
// create a LocalDate from this LocalDateTime (that means taking just the date part of it)
LocalDate localDate = localDateTime.toLocalDate();
// and print it
System.out.println(localDate);
// if you really need a Date, then use legacy compatibility, but try to avoid it
Date date = Date.from(instant);
// printing outdated class omitted...
}
然后就可以输出了
2020-05-26
您可以使用不含小时、分钟和秒的
DateTimeFormatter
日期更改输出格式,格式为dd/mm/yyyy
作为字符串?否,作为日期。它在数据库中是日期格式的,我必须保存它。什么数据库?它是只存储java.util.Date
还是可以存储java.time.LocalDate
?如果只存储Date
,可以使用LocalDate
,查看oracle数据库。我想它肯定能同时储存这两种东西。在bbdd中键入日期。感谢您的评论。我得到了这个日期的所有时间1970-01-19 00:00:00
,而大纪元时间是从昨天开始的。你知道发生了什么吗?而且这不是我想要的格式这基本上是我的答案说的,不知道谁之前。。。但是很高兴在一行中看到它;-)谢谢各位,这就是解决办法。有没有办法将其格式化为dd/mm/yyyy?@staple23格式化需要将其序列化为字符串时,您不需要将其格式化以保存在数据库中,我添加了如何将其格式化为字符串在您的业余时间尝试阅读此处