java - Android 中的 SimpleFormat 未检测到 GMT 时区

标签 java android

我有一个来自服务器的 GMT 日期字符串

2015-05-14 12:27:35

我正在使用以下代码将其转换为文本差异。

Calendar systemCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));

try {
    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
    Date date = (Date) formatter.parse(dateString);

    /***********************************/
    CharSequence myDateString = DateUtils.getRelativeTimeSpanString(date.getTime(), systemCal.getTimeInMillis(), DateUtils.MINUTE_IN_MILLIS);
    return myDateString.toString().replace("minutes", "min");

现在我遇到了问题

    Date date = (Date) formatter.parse(dateString);

结果是 2015 年 5 月 14 日星期四 05:27:35 GMT+05:00

现在我的问题是,当我已经设置了 GMT 时区时,为什么它使用我的设备默认时区,我如何使用 GMT 时区解析它?

最佳答案

您为 systemCal 设置了 GMT。使用创建日期时使用相同的时区。它使用默认的 timezome,它有所不同。

    Calendar systemCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    formatter.setTimeZone(TimeZone.getTimeZone("GMT"));
    Date date = (Date) formatter.parse("2015-02-03 10:11:12");
    System.out.println(date); // => Tue Feb 03 05:11:12 EST 2015
    System.out.println(formatter.format(date)); // => 2015-02-03 10:11:12

关于java - Android 中的 SimpleFormat 未检测到 GMT 时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30354159/

相关文章:

java - 单击按钮后如何动态添加文本字段?

java - Java中元素迭代器的并行计算

java - 循环遍历 array.xml

java - 如果 Java 程序员想要传递一个函数,他们在 Java 8 之前做了什么?

java - war 中的文件路径

Java:无法从 String 转换为 int

android - 如何使对话框逐渐变大而不是立即变大

Android:如何更改按钮的默认形状?

android - 如何在 Flutter 中显示 Android Activity?

android studio渲染错误