将Java Date从一种格式转换为另一种格式而不将其转换为字符串

我正在尝试获取当前的系统日期,并将其格式化为Etc / UTC,然后进入此“dd.MM.yyyy HH:mm z”格式。 问题是格式化日期后格式化函数返回一个字符串而不是日期。 这是下面的代码spinet

final Date currentDate = new Date(); final SimpleDateFormat dateFormatter = new SimpleDateFormat("dd.MM.yyyy HH:mm z"); dateFormatter.setTimeZone(TimeZone.getTimeZone("Etc/UTC")); String finalDateTime= dateFormatter.format(currentDate); System.out.println(finalDateTime); 

是否有任何替代解决方案允许我通过将我保留在此日期对象中来格式化日期,因为我已经在java 8之后和java 8之前研究了每个日期库,看起来如果我想格式化任何类型的日期或日期时间,我必须使用格式化程序将给定日期转换为字符串。

任何替代解决方案或不可能吗?

Date代表单个时间点。 就是这样,仅此而已。 它不包含任何有关时区的信息。

Wed Jun 06 12:38:15 BST 2018Wed Jun 06 11:38:15 GMT 2018相同Date (即时),只是在不同的时区。 这就像“人类”和“同性恋者”这两个词。 它们指的是同一物种,它们只是一种不同的“格式”。

因此您无需以任何方式更改日期。 您只需要以不同的方式格式化它。 这就是格式化程序返回String的原因。 只有String可以表示日期的一种特定格式