android - "Fri, 12 Sep 2014 05:00:23 GMT",SimpleDateFormat 有什么问题?

标签 android datetime time timezone simpledateformat

“Fri, 12 Sep 2014 05:00:23 GMT”,SimpleDateFormat 有什么问题?

SimpleDateFormat sdf = new SimpleDateFormat(format);
sdf.parse(dateString);
format:    "EEE, dd MMM yyyy HH:mm:ss 'GMT'"
dateString:"Fri, 12 Sep 2014 05:00:23 GMT"

怎么了?

最佳答案

假设您的问题是日期显示错误,时区的 SimpleDateFormat 转换说明符是 z 而不是 'GMT'(尽管您可以对其他两个变体使用 ZX,分别是 RFC822 和 ISO8601)。

根据你的说明符,我得到了凌晨 5 点的本地时间。如果我在我的代码中使用正确的说明符,它工作正常:

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

public class Test {
    public static void main (String[] args) {
        String format = "EEE, dd MMM yyyy HH:mm:ss z";
        String date = "Fri, 12 Sep 2014 05:00:23 GMT";
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            Date dt = sdf.parse(date);
            System.out.println(dt);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

该程序的输出(对于西澳大利亚珀斯,即 UTC+8)如预期的那样:

Fri Sep 12 13:00:23 WST 2014

参见 SimpleDateFormat online documentation了解更多详情。

如果您仍然遇到问题,请尝试从您的格式和日期字符串中删除个别项目,直到它开始工作。一旦您确定了有问题的格式说明符,就会更容易追踪。

关于android - "Fri, 12 Sep 2014 05:00:23 GMT",SimpleDateFormat 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25801101/

相关文章:

android - 使用 SimpleDateFormat 和 UmmalquraCalendar 在阿拉伯语中显示日期名称时得到空字符串

android - 无法在使用 Kotlin 的方法调用中为接口(interface)传递 lambda(就像 setOnClickListener 的做法一样)

pandas - 仅选择每月最后一天的数据(行)

php - gmmktime() : You should be using the time() function instead

javascript - 我可以考虑请求时间来获取JS客户端和服务器之间的时间差吗?

android - firebase datasnshot 控制子项

android - 约束布局行为以匹配线性布局行为

python - 如何通过将日期作为用户输入来查找两个日期之间的差异

javascript - 使用 php 在输入类型 "datetime"中预设当前日期和时间

Java 字符串连接到整数运算