【问题标题】:I want to mark the date, but I don't know what to do我想标记日期,但我不知道该怎么做
【发布时间】:2022-01-08 14:21:16
【问题描述】:

我有这个日期

regdate = 2021-12-02 11:30:05

我想增加 2 小时,所以我添加了这段代码。

                val simpleDate = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH)
                val cal = Calendar.getInstance()
                cal.time = simpleDate.parse(regdate)
                cal.add(Calendar.HOUR, 2)

但是输出值是这样出来的,我要问一个问题。

13:30:05 

我这次要这个格式

2021-12-02 13:30:05

我该怎么做?

感谢您的帮助

【问题讨论】:

  • 被否决:您要求输出值,但您没有发布输出方式的代码,这是您问题中最重要的部分。
  • 考虑不使用SimpleDateFormatCalendar。两者的设计都很糟糕,前者出了名的麻烦,而且两者都已经过时了,所以绝不推荐。使用 java.time,现代 Java 日期和时间 API。它从 API 级别 26 开始内置,可通过脱糖用于较低级别。

标签: android date kotlin


【解决方案1】:

java.time

考虑使用现代 Java 日期和时间 API java.time 来处理日期和时间。

使用 java.time 通常会将格式化程序声明为静态常量。请原谅我的 Java 语法。

private static final DateTimeFormatter FORMATTER 
        = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss", Locale.ENGLISH);

然后工作是这样的:

    String regDateTimeString = "2021-12-02 11:30:05";

    ZoneId defaultZone = ZoneId.systemDefault();
    ZonedDateTime reg = LocalDateTime.parse(regDateTimeString, FORMATTER)
            .atZone(defaultZone);
    ZonedDateTime zdt = reg.plusHours(2);

    String output = zdt.format(FORMATTER);
    System.out.println(output);

大多数时区的输出也符合您的预期:

2021-12-02 13:30:05

我喜欢 java.time 代码的一点是,它明确表示计算取决于时区。

教程链接

Trail: Date Time (The Java™ Tutorials)

【讨论】:

    【解决方案2】:

    看起来这就是你想要的

    val simpleDate = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH)
    val cal = Calendar.getInstance()
    cal.time = simpleDate.parse("2021-12-02 11:30:05")
    cal.add(Calendar.HOUR, 2)
    println("0000000000000 =>" + simpleDate.format(cal.time))
    

    =>> 输出:I/System.out: 0000000000000 =>2021-12-02 13:30:05

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 2021-01-21
      • 2020-11-28
      • 2011-06-21
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多