将 Java 日期从一种格式转换为另一种格式而不将其转换为字符串
Convert Java Date from one format to another without converting it into string
我正在尝试获取我当前的系统日期并将其格式化为 Etc/UTC,然后再格式化为这种 "dd.MM.yyyy HH:mm z" 格式。问题是格式化日期 returns 后的格式函数是一个字符串而不是日期。这是下面的代码 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 之前的每个日期库,看起来像如果我想格式化任何类型的日期或日期时间,我必须使用将给定日期转换为字符串的格式化程序。
任何替代解决方案或不可能?
Date
表示单个时间点。仅此而已,仅此而已。它不包含任何关于时区的信息。
Wed Jun 06 12:38:15 BST 2018
与 Wed Jun 06 11:38:15 GMT 2018
相同 Date
(即时),只是时区不同。就像 "humans" 和 "homo sapians" 这两个词。它们指的是同一个物种,它们只是种类不同 "format".
所以您不需要以任何方式更改日期。你只需要以不同的方式格式化它。这就是格式化程序 return String
的原因。只有 String
可以表示日期的一种特定 格式 。
我正在尝试获取我当前的系统日期并将其格式化为 Etc/UTC,然后再格式化为这种 "dd.MM.yyyy HH:mm z" 格式。问题是格式化日期 returns 后的格式函数是一个字符串而不是日期。这是下面的代码 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 之前的每个日期库,看起来像如果我想格式化任何类型的日期或日期时间,我必须使用将给定日期转换为字符串的格式化程序。
任何替代解决方案或不可能?
Date
表示单个时间点。仅此而已,仅此而已。它不包含任何关于时区的信息。
Wed Jun 06 12:38:15 BST 2018
与 Wed Jun 06 11:38:15 GMT 2018
相同 Date
(即时),只是时区不同。就像 "humans" 和 "homo sapians" 这两个词。它们指的是同一个物种,它们只是种类不同 "format".
所以您不需要以任何方式更改日期。你只需要以不同的方式格式化它。这就是格式化程序 return String
的原因。只有 String
可以表示日期的一种特定 格式 。