【问题标题】:convert String to Util date in "dd-MMM-yyyy" fromat [duplicate]将字符串转换为“dd-MMM-yyyy”中的 Util 日期 fromat [重复]
【发布时间】:2016-05-08 20:20:36
【问题描述】:

我在 Eclipse 中工作。 我有字符串 date = "12-DEC-2016"

现在我想将其转换为相同格式的实用日期。请帮我解决这个问题。

【问题讨论】:

标签: java swing datepicker


【解决方案1】:

转化

要将String 转换为特定格式的java.util.Date,您可以使用java.text.DateFormatDateFormat 对象可以执行双向转换,通过调用format()StringDate 以及通过调用parse()DateStringDateFormat对象可以通过多种方式获取,这里有一些:

  • 通过DateFormat 中的static get*Instance() 方法之一获取实例。当您希望格式位于用户的区域设置中时,这尤其有用。例如,DateFormat.getDateInstance(DateFormat.SHORT)
  • 通过创建SimpleDateFormat 的实例来创建您自己的特定格式。例如,new SimpleDateFormat("dd-MMM-yyyy")

您应该考虑是否需要特定的固定格式,或者是否需要用户语言环境使用的任何格式。请记住,不同的国家/地区使用不同的格式。

如果格式不是针对用户,而是针对机器对机器的数据交换,您应该考虑使用 ISO 8601RFC 1123 作为格式。 p>

还可以考虑使用java.time 包而不是java.util.Date。如果您需要执行计算,java.time 包功能更强大。它通常会导致代码更容易理解和更精确,尤其是在处理时区、夏令时、本地时间与 UTC 等方面。

注意事项:

  • 您在 Eclipse 中工作与问题无关。

参考文献

【讨论】:

    【解决方案2】:

    java.time

    accepted Answer by Hujer 是正确的,但侧重于麻烦的过时类 java.data.Date/.Calendar 和 SimpleDateFormat。正如建议的那样,您应该使用 Java 8 及更高版本中内置的 java.time 框架。

    LocalDate

    新类包括 LocalDate 来表示仅日期值,没有时间或时区。

    当您的字符串包含要翻译的单词、日期或月份的名称时,解析需要Locale。明确指定比依赖 JVM 当前的默认语言环境更好。

    String input = "12-DEC-2016";
    DateTimeFormatter f = DateTimeFormatter.ofPattern( "d-MM-uuuu" );
    f = f.withLocale( Locale.ENGLISH );
    LocalDate ld = LocalDate.parse( input , f );
    

    【讨论】:

      猜你喜欢
      • 2017-09-05
      • 1970-01-01
      • 2018-08-05
      • 2018-04-07
      • 2021-10-06
      • 2018-06-11
      • 2020-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多