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

2022-08-24 00:00:00 datetime date simpledateformat java-8 java
我正在尝试获取当前系统日期,并将其格式化为ETC/UTC,然后再格式化为"dd.MM.yyyy HH:mm z"格式。问题是格式化日期后的FORMAT函数返回的是字符串,而不是日期。下面是代码旋转框

    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); 

有没有其他解决方案可以让我通过保留在这个Date对象中来格式化日期,因为我研究了Java 8之后和Java 8之前的每个Date库,似乎如果我想格式化任何类型的Date或DateTime,我必须使用将给定日期转换为字符串的格式化工具。

是否有其他解决方案或不可能?


解决方案

Date表示单个时间点。就是这样,没有更多,没有更少。它不包含任何有关时区的信息。

Wed Jun 06 12:38:15 BST 2018Wed Jun 06 11:38:15 GMT 2018相同,只是位于不同的时区。就像单词"人类"和"智人"一样。它们指的是相同的物种,只是它们的"格式"不同而已。

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

相关文章