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

时间:2018-06-06 11:28:56

标签: java datetime java-8 simpledateformat java-date

我正在尝试获取当前的系统日期,并将其格式化为Etc / UTC,然后将其格式化为#34; 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之前研究了每个日期库,看起来我想要格式化任何类型的日期或dateTime,我必须使用格式化程序将给定日期转换为字符串。

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

1 个答案:

答案 0 :(得分:5)

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

Wed Jun 06 12:38:15 BST 2018Date的{​​{1}}(即时)相同,只是在不同的时区。它就像人类"和"同性恋者"。它们指的是相同的物种,它们只是一种不同的格式"。

因此,您无需以任何方式更改日期。你只需要以不同的方式格式化它。这就是格式化程序返回Wed Jun 06 11:38:15 GMT 2018的原因。只有String代表日期的一个特定格式