当前位置: 首页 > 知识库问答 >
问题:

如何从“20201023t200457z”和“EEE MMM dd HH:MM:SS zzz YYYY”生成本地化的日期时间?[副本]

方昊英
2023-03-14

我得到这个结果:10月23日星期五20:04:57 GMT+02:00 202,代码如下:

    SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'", Locale.getDefault());
    Date startGMTInput = df.parse(start);
    Log.e(TAG, "start: " + startGMTInput.toString());// -> Fri Oct 23 20:04:57 GMT+02:00 2020

但我的目标是得到:2020-10-2322:04:57//因为我在GMT+2时区

共有1个答案

芮星海
2023-03-14

考虑使用Java.time(现代Java日期和时间API)来完成日期和时间工作。让我们首先定义我们需要的格式化程序:

private static final DateTimeFormatter inputFormatter
        = DateTimeFormatter.ofPattern("uuuuMMdd'T'HHmmssX");
private static final DateTimeFormatter outputFormatter
        = DateTimeFormatter.ofPattern("yyyyMMdd HH:mm:ss");

(DateTimeFormatter是线程安全的,因此我们可以安全地将它们声明为静态的。)显式执行时区转换:

    String startString = "20201023T200457Z";
    Instant start = inputFormatter.parse(startString, Instant.FROM);
    String target = start.atZone(ZoneId.systemDefault()).format(outputFormatter);
    System.out.println(target);

在我的时区输出(当前与您的时区一样在偏移量+02:00):

    null
    null
 类似资料:
  • 我有一个开始日期时间:“20201023T200457Z”(似乎是UTC0000)如何在移动设备上用本地时间的“yyyyMMdd HH:mm:ss”模式转换/生成它? 我得到这个结果:周五10月23 20:04:57格林尼治标准时间02:00 2020与此代码: 但我的目标是:2020-10-23 22:04:57//因为我在格林尼治标准时间2时区

  • 问题内容: 我正在尝试将一个实例转换为一个实例。 我没有得到编译器错误,但是实例值是错误的。 我认为这不起作用,因为它存储时间而不是。 我正在使用JDK 1.8版。 问题答案: 您的输入实际上是一个。简单地将其解析为a 然后从中获取会更简单。无需担心时区,无需保留某些传统课程(避免并在可能的情况下…)

  • 我有一个时区字符串,例如,“太平洋时间(美国和加拿大)”。对于特定的日期,包括夏令时,我需要在该时区以UTC获得相当于3PM的值。我该怎么做呢? 例如,我需要在UTC时间中找到12月3日PDT的3PM。

  • 问题内容: 如何在Swift中获取本地日期和时间? 问题答案: 我已经找到答案了。

  • 我正在开发一个android应用程序,向用户显示预订的时间和日期。目前我使用的是系统时间和日期,但问题是用户可以随时更改它。那么如何得到正确的时间和日期呢?我在这个问题上工作了3天多,但我还没有找到任何解决办法。任何帮助都很感激。

  • 我尝试在java中使用本地化以本地样式打印日期。我已经使用数字和货币制作了类似的功能,但我未能将相同的行为应用到日期。 正如我在几天前发布此主题时所了解的,GraalVM Quarkus Locale在本机模式下,使用本机模式下的本地化需要使用创建一个“@AutomaticFeature”。 这个技巧适用于数字和货币: 但它不适用于DateTimeFormatter: 在开发模式下一切正常,但在原