我正在尝试获取当前系统日期并将其格式化为 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 之前的每个日期库,似乎我想格式化任何类型的日期或dateTime,我必须使用格式化程序将给定日期转换为字符串。
任何替代解决方案还是不可能的?
最佳答案
Date
代表一个时间点。仅此而已,仅此而已。它不包含任何有关时区的信息。
Wed Jun 06 12:38:15 BST 2018
是一样的Date
(即时)为 Wed Jun 06 11:38:15 GMT 2018
, 只是在不同的时区。就像“人类”和“智人”这两个词。它们指的是同一个物种,只是“格式”不同而已。
因此您不需要以任何方式更改日期。你只需要以不同的方式格式化它。这就是格式化程序返回 String
的原因秒。只有String
s 可以表示日期的一种特定格式。
关于java - 将 Java Date 从一种格式转换为另一种格式而不将其转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50719313/