我在我的应用程序中有以下代码
System.out.println(rec.getDateTrami().getTime());
我需要转换以下格式(我想它们是秒)
43782000
29382000
29382000
格式YYYY-MM-DD HH24:MI:SS
,任何人都可以帮助我?
答案 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));
答案 1 :(得分:1)
使用java.time
最好如果您可以更改getDateTrami()
以从OffsetDateTime
返回ZonedDateTime
或java.time
。 java.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)