【问题标题】:How to parse time stamp with GMT in string to date format? [duplicate]如何以字符串到日期格式解析带有 GMT 的时间戳? [复制]
【发布时间】:2017-10-05 11:33:57
【问题描述】:

如何将字符串格式中的以下时间戳解析为日期格式。

2017 年 9 月 25 日星期一 13:40:56 GMT+05:30

由于时间戳中有 GMT,所以我没有找到有效的答案。请让我知道如何为此写SimpleDateFormat?

【问题讨论】:

  • 你用谷歌搜索过你的标题吗?
  • @FrançoisLEPORCQ 我不这么认为...SimpleDateFormat 是完整的,并通过示例提供了每个支持的日期/时间组件。
  • 我的回答是我的评论,文档足以让你做一些研究。我们不是在这里提供现成的解决方案。
  • 在duplicate target 中,an answer 包含所有可能的模式(包括 GMT 部分)。你尝试过什么吗?如果是这样,您可以edit该问题并添加您尝试过的代码,并解释为什么它与其他问题不同,以及您遇到的错误等等。否则,您的问题将被视为重复。
  • @Seenu69 那么您可能已经尝试过使用SimpleDateFormat,您应该发布您拥有的代码。这本来是一个更有效的问题。

标签: java datetime simpledateformat datetime-parsing


【解决方案1】:

在带有 SimpleDateFormat 的 java 7 中

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
    public static void main(String[] args) {
        String input = "Mon Sep 25 13:40:56 GMT+05:30 2017";
        String dateFormat = "EEE MMM d HH:mm:ss z yyyy";
        try {
            Date date = new SimpleDateFormat(dateFormat).parse(input);
            System.out.println(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }

    }
}

查看实际操作:https://ideone.com/RaCugz

【讨论】:

  • 我在Android studio中检查过,它无法导入DateTimeFormatter??
  • 你在 java 8 中吗?
  • @Seenu69 在 Android 中(如果您可以在项目中添加依赖项,在这种情况下,IMO 完全值得)您可以使用 ThreeTen Backport,这是 Java 8 的一个很好的反向移植新的日期/时间类。为了让它工作,你还需要ThreeTenABP(更多关于如何使用它here)
  • @FrançoisLEPORCQ 在 Java 8 中,您可以直接解析为 OffsetDateTime(因为输入字符串已经包含所有必要的信息),然后直接从中调用 toInstant()。解析为LocalDate会丢弃时间和偏移量信息,使用atStartOfDay(ZoneId.systemDefault())会将时间设置为午夜,并使用JVM默认时区(不保证与输入的偏移量相同)。
  • 请注意,这仅在语言环境为英语时才有效。如果我运行它(具有法语语言环境),即使 Date.toString 返回英文时间戳,它也无法解析它。我需要将语言环境(例如)设置为英语。 (这就是为什么包含文本日期字段是有风险的)。 (您可以使用SimpleDateFormat(String, Locale) 构造函数设置语言环境;))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-04
相关资源
最近更新 更多