将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 2018
与Wed Jun 06 11:38:15 GMT 2018
相同,只是位于不同的时区。就像单词"人类"和"智人"一样。它们指的是相同的物种,只是它们的"格式"不同而已。
因此您不需要以任何方式更改日期。你只需要改变它的格式就行了。这就是格式化程序返回String
%s的原因。只有String
%s可以表示日期的一种特定格式。
相关文章