【问题标题】:Working with U.S. date and time and Incrementing使用美国日期和时间并递增
【发布时间】:2020-05-05 13:36:48
【问题描述】:

我想创建一个函数,它接收一个表示日期的字符串,格式为“MM/dd/yyyy HH:mm AM or PM”,我想在返回之前将日期和时间增加 X 次格式 yyyy-MM-dd HH:mm AM 或 PM"。现在我知道的唯一方法是将其转换为欧洲日期和时间,使用 LocalDateTime 或 Calendar 使用它,然后再次转换,但感觉效率低下来回转换。是否有任何日期和时间对象可以使用美国时间并执行增量等操作?

【问题讨论】:

  • 你可以直接从LocalDateTime解析/格式化它....
  • 唯一有效的方法是在程序内部将您的日期和时间表示为LocalDateTime(而不是字符串)。与使用正确的日期和时间类型的优势相比,解析输入和格式化输出的成本非常小。

标签: java


【解决方案1】:

DateTimeFormatter + LocalDateTime

import java.time.temporal.ChronoUnit;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

DateTimeFormatter formater = DateTimeFormatter.ofPattern("MM/dd/yyyy h:mm:ss a", Locale.ENGLISH);
LocalDateTime dateTime = LocalDateTime.parse("05/06/2020 3:45:00 PM", formater);
dateTime.plus(5, ChronoUnit.DAYS)

【讨论】:

    【解决方案2】:

    尝试 DateTimeFormatter.ofPattern(...) 将您的字符串解析为 LocalDateTime。还有解析AM/PM的选项

    Symbol  Meaning                     Presentation      Examples
    ------  -------                     ------------      -------
    a       am-pm-of-day                text              PM
    

    https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO

    【讨论】:

      【解决方案3】:

      由于您首先将日期作为字符串输入,因此您需要转换为 LocalDateTime 来操作它。话虽如此,您可以这样做:

          DateTimeFormatter formatter = new DateTimeFormatter("MM/dd/yyyy hh:mm a");
          LocalDateTime date = LocalDateTime.parse([yourString], formatter);
      

      从这里您可以使用本文档中的加号和减号方法进行日期/时间操作:https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html 然后,一旦你这样做了,就创建一个 SimpleDateFormat,如下所示:

      SimpleDateFormat sdf = new SimpleDateFormatter.ofPattern(yyyy-MM-dd hh:mm a)
      

      然后像这样打印你的字符串:

      sdf.format(date).toString(); 
      

      【讨论】:

      • 请注意,对于多线程应用程序,您需要在使用 SimpleDateFormat 时进行同步。
      • 您似乎混淆了不同的东西,例如使用构造函数创建的SimpleDateFormat 和通过ofPattern 创建的DateTimeFormatter。此外,sdf 不会打印 LocalDateTime 实例。
      猜你喜欢
      • 2010-11-14
      • 1970-01-01
      • 2014-02-19
      • 1970-01-01
      • 2013-09-05
      • 1970-01-01
      • 2020-11-30
      • 2015-11-06
      • 1970-01-01
      相关资源
      最近更新 更多