Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串格式的历元转换为不带时间戳的日期_Java_Spring_Spring Boot - Fatal编程技术网

Java 将字符串格式的历元转换为不带时间戳的日期

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(

我从API收到了大纪元时间的日期。它们是字符串格式的,我想要的是简单地将其转换为日期,不包括小时、分钟和秒,格式为dd/mm/yyyy。例如:

  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格式化需要将其序列化为字符串时,您不需要将其格式化以保存在数据库中,我添加了如何将其格式化为字符串在您的业余时间尝试阅读此处