【问题标题】:Convert Java Date from one format to another without converting it into string将 Java 日期从一种格式转换为另一种格式而不将其转换为字符串
【发布时间】:2018-06-06 11:28:55
【问题描述】:

我正在尝试获取我当前的系统日期并将其格式化为 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 与其字符串表示混淆了。就好像您要求使用始终以 2 位小数打印的双精度数 - 数字不理解小数或打印,只有格式化程序可以。

标签: java datetime java-8 simpledateformat date


【解决方案1】:

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

Wed Jun 06 12:38:15 BST 2018Wed Jun 06 11:38:15 GMT 2018 相同(即时)Wed Jun 06 11:38:15 GMT 2018,只是在不同的时区。这就像“人类”和“智人”这两个词。它们指的是同一个物种,只是一种不同的“格式”。

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

【讨论】:

  • 如果我理解了您的概念,您的意思是说日期将始终保持为日期,但格式化程序将是它的信标,信标将具有不同的形状,但日期将始终与实体相同。就像人和衣服一样,人可以穿不同的衣服,但最终人还是一样的人
猜你喜欢
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多