【问题标题】:How to get system date and time format in java? [duplicate]如何在java中获取系统日期和时间格式? [复制]
【发布时间】:2019-08-23 09:29:45
【问题描述】:

我正在尝试在 java 中读取当前系统日期和时间格式,但在分析后我找不到任何方法,所以任何人都可以帮助我。这就是我想从 java 中读取的内容。

【问题讨论】:

  • 你试过什么?获取系统日期只需一个方法调用(来自任何数字类)。
  • @Stultuske 问题是关于日期和时间格式
  • @JBNizet 这是关于“当前系统日期”和“时间格式”的所以,我假设他们希望当前系统日期(第 1 步)采用特定格式(第 2 步)。如果你没有开始,你就不可能有结果。因此,只要 OP 没有 LocalDateTime、DateTime、... .now() 或类似的,投入 Formatter 就有点多余
  • 我只想读取日期/时间格式,而不是 java 中的当前日期/时间。
  • 我为您here发布了链接原始问题的新现代答案。

标签: java datetime-format systemtime


【解决方案1】:

要获取当前系统语言环境的DateTimeFormatter,您可以使用DateTimeFormatter.ofLocalizedDateTime()

FormatStyle 参数控制您想要多头还是空头表示(1952 年 4 月 12 日星期二,太平洋标准时间下午 3:30:42 对比 12.13.52 下午 3:30)。


几个例子以及我在本地系统上得到的结果:

//Tuesday, 2 April 2019 at 5:49:39 pm Australian Eastern Daylight Time
DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL).format(ZonedDateTime.now())

//2 April 2019 at 5:50:20 pm AEDT
DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG).format(ZonedDateTime.now())

//2/4/19, 5:50 pm
DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT).format(ZonedDateTime.now())

【讨论】:

    【解决方案2】:

    您只能以毫秒为单位询问系统当前时间。然后您可以将它们转换为 DateTime:

    long timestamp = System.currentTimeMillis();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");    
    Date date = new Date(timestamp);
    System.out.println(dateFormat.format(date));
    

    【讨论】:

    • 问题是关于操作系统中配置的格式。
    • 请不要教年轻人使用臭名昭著的麻烦和过时的SimpleDateFormat类。今天我们在java.time, the modern Java date and time API, 和它的DateTimeFormatter 中做得更好。
    【解决方案3】:

    仅使用 Java API 是无法做到的。系统日期时间格式是操作系统特定的,Java 没有读取它的 API(您可以读取日期时间和语言环境,但不能读取格式)。您必须找到一些库来完成它或自己编写它 - 但请注意,这对于每个操作系统都会有很大不同。例如。对于 Windows,您可能必须阅读 Windows 注册表。

    获取语言环境:Locale.getDefault()

    从语言环境来看,在大多数情况下,您可能可以假定格式(但如果用户选择了非典型格式,则不能)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 2018-07-04
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      相关资源
      最近更新 更多