Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 如何将getTime()转换为';YYYY-MM-DD HH24:MI:SS';_Java_Datetime Format_Seconds - Fatal编程技术网

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

Java 如何将getTime()转换为';YYYY-MM-DD HH24:MI:SS';,java,datetime-format,seconds,Java,Datetime Format,Seconds,我的应用程序中有以下代码 System.out.println(rec.getDateTrami().getTime()); 我需要转换以下格式(我假设它们是秒) 对于格式YYYY-MM-DD HH24:MI:SS,任何人都可以帮助我?您可以使用SimpleDataFormat new SimpleDateFormat("YYYY-MM-DD HH24:MI:SS").format(date) 您可以使用SimpleDataFormat 例如: SimpleDateFormat format

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

System.out.println(rec.getDateTrami().getTime());
我需要转换以下格式(我假设它们是秒)


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

您可以使用SimpleDataFormat

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

您可以使用
SimpleDataFormat

例如:

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));
文件: ,
使用
java.time

最好更改
getDateTrami()
以从
java.time
返回
OffsetDateTime
ZonedDateTime
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));
当然,结果与上述类似。我故意明确表示我要在哪个时区解释时间点。如果不是大西洋/佛得角,请替换您自己的

格式化自纪元起的秒数

    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月的一个日期。如果这是不正确的,那是因为29382000并不表示自1970年1月1日午夜UTC的纪元(也称为Unix纪元)以来的秒数。到目前为止,这是测量秒的最常见时间。如果你的秒数是从某个固定的时间点开始测量的,我猜不出是哪个,而你必须要做的就是找出答案。再次确定要指定的时区。

使用
SimpleDataFormat
是否返回
Date
对象?问是因为
日期
课程早已过时,而今天我们的课程好多了。如果您可以更改
getDateTrami()
以返回一个现代类的实例,您应该更愿意这样做。为了您自己(以及我们的),请在询问之前搜索和研究。如何在Java中格式化日期时间已经在很多地方讨论过了,包括堆栈溢出和其他地方。搜索时只有一个警告:避免使用提及
SimpleDateFormat
的解决方案。如今,这个类早已过时,并且出了名的麻烦。@CodeMatrix
SimpleDataFormat
正是要避免的类。如果您使用的是Java8,则更是如此,正如您的链接所示。不管Java版本如何,这个类都很麻烦。jc1992,在我看来,你的数字并不像秒,你确定吗?你知道他们应该在几年内大致对应哪个日期时间吗?请不要教年轻人使用过时且臭名昭著的
SimpleDateFormat
类。今天我们的生活好多了。即使您需要先从旧式的
Date
对象转换,也不行(您应该避免使用
SimpleDateFormat
)。
1970-12-06 23:40:00