如何将getTime()转换为'YYYY-MM-DD HH24:MI:SS'

时间:2017-12-14 12:05:46

标签: java datetime-format seconds

我在我的应用程序中有以下代码

System.out.println(rec.getDateTrami().getTime());

我需要转换以下格式(我想它们是秒)

43782000
29382000
29382000

格式YYYY-MM-DD HH24:MI:SS,任何人都可以帮助我?

3 个答案:

答案 0 :(得分:3)

您可以使用SimpleDateFormat

示例:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = new Date();
date.setTime(rec.getDateTrami().getTime());
System.out.println(format.format(date));

文档: SimpleDateFormatDateFormat

答案 1 :(得分:1)

使用java.time

最好如果您可以更改getDateTrami()以从OffsetDateTime返回ZonedDateTimejava.timejava.time是现代Java日期和时间API。它也被称为JSR-310。无论返回两种类型中的哪一种,代码都是相同的:

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
    System.out.println(rec.getDateTrami().format(formatter));

这会打印日期和时间,如

2017-12-14 16:52:20

java.time通常比过时的Date班级及其朋友更好。

如果您无法更改返回类型

我认为getDateTrami()会返回java.util.Date。由于Date类已经过时,所以要做的第一件事就是将其转换为java.time.Instant。从那里开始进一步的操作:

    Date oldfashionedDateObject = rec.getDateTrami();
    ZonedDateTime dateTime = oldfashionedDateObject.toInstant()
            .atZone(ZoneId.of("Atlantic/Cape_Verde"));
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
    System.out.println(dateTime.format(formatter));

当然,结果与上述类似。我故意明确说明我想在哪个时区解释时间点。如果它不是Atlantic / Cape_Verde,请替换你自己。

格式化纪元以来的秒数

    int seconds = 29_382_000;
    ZonedDateTime dateTime = Instant.ofEpochSecond(seconds)
            .atZone(ZoneId.of("Atlantic/Cape_Verde"));
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss");
    System.out.println(dateTime.format(formatter));

此代码段打印

1970-12-06 23:40:00

1970年12月的日期。如果这是不正确的,那是因为29 382 000并未表示自1970年1月1日UTC时间午后的秒数,也称为Unix时代。这是迄今为止测量秒数的最常见时间。如果您的秒数是从某个其他固定时间点测量的,我无法猜出哪一个,并且您有找到工作要做。再次确定您要指定的时区。

答案 2 :(得分:0)

您可以使用SimpledateFormat。

new SimpleDateFormat("YYYY-MM-DD HH24:MI:SS").format(date)