首页 > 解决方案 > 从秒到日期的时间转换问题

问题描述

我有以下Long变量以秒为单位保存纪元值,我正在尝试将其转换为Date.

val seconds = 1341855763000
val date = Date(TimeUnit.SECONDS.toMillis(seconds))

输出比我预期的要差。我哪里做错了?

Actual: Wed Sep 19 05:26:40 GMT+05:30 44491
Expected: Monday July 9 11:12:43 GMT+05:30 2012

标签: javadatekotlintime

解决方案


输出比我预期的要差。我哪里做错了?

Actual: Wed Sep 19 05:26:40 GMT+05:30 44491
Expected: Monday July 9 11:12:43 GMT+05:30 2012

该值已经存在,milliseconds并且使用TimeUnit.SECONDS.toMillis(seconds)您错误地将其乘以1000.

通过使用现代日期时间 API

import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant instant = Instant.ofEpochMilli(1341855763000L);
        System.out.println(instant);
    }
}

输出:

2012-07-09T17:42:43Z

通过使用 legacy java.util.Date

import java.util.Date;

public class Main {
    public static void main(String[] args) {
        System.out.println(new Date(1341855763000L));
    }
}

输出:

Mon Jul 09 18:42:43 BST 2012

我建议您从过时且容易出错的java.util日期时间 APISimpleDateFormat切换到现代 java.time日期时间 API 和相应的格式化 API(包,java.time.format)。从Trail: Date Time了解有关现代日期时间 API 的更多信息。


推荐阅读