我正在尝试获取当前的系统日期,并将其格式化为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,我必须使用格式化程序将给定日期转换为字符串。
任何替代解决方案或不可能?
答案 0 :(得分:5)
Date
表示单个时间点。这就是它,仅此而已。 不包含有关时区的任何信息。
Wed Jun 06 12:38:15 BST 2018
与Date
的{{1}}(即时)相同,只是在不同的时区。它就像人类"和"同性恋者"。它们指的是相同的物种,它们只是一种不同的格式"。
因此,您无需以任何方式更改日期。你只需要以不同的方式格式化它。这就是格式化程序返回Wed Jun 06 11:38:15 GMT 2018
的原因。只有String
代表日期的一个特定格式。