【问题标题】:Parse date with AEDT time zone in java [duplicate]在java中使用AEDT时区解析日期[重复]
【发布时间】:2014-08-25 10:39:36
【问题描述】:

我正在尝试解析格式字符串

Sat Feb 01 15:00:19 AEDT 2014

进入日期对象。我的代码如下所示:

SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM d HH:mm:ss zzz yyyy");
try{
    Date time = parserSDF.parse("Sat Feb 01 15:00:19 AEDT 2014");
}catch(Exception e){
    e.printStackTrace();
}

但我收到“解析错误”。我无法更改日期的输入格式,也无法将我的时区设置为静态值,因为此代码将在 andorid 设备上运行。如何将此字符串解析为日期?

【问题讨论】:

    标签: java android parsing date


    【解决方案1】:

    “AEDT”是 4 个字母的时区,不受支持。这会导致异常。 只能解析valid timezones

    您可以使用 (GMT+11) 代替 AEDT,如下所示:

        SimpleDateFormat parserSDF = new SimpleDateFormat("E MMM dd HH:mm:ss yyyy");
        parserSDF.setTimeZone(TimeZone.getTimeZone("GMT+11"));
        try{
            Date time = parserSDF.parse("Sat Feb 01 15:00:19 2014");
        }catch(Exception e){
            Toast.makeText(this, "exception: "+e.toString(), Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
    

    【讨论】:

    • 由于这段代码是在安卓设备上运行的,所以时区可能会有所不同,而且显然还有其他 4 个字母的时区。有没有办法解析这些字符串?
    • @EddardStark:Android doesn't allow 4 个字母的时区。如果您看到使用任何 4 个字母的时区,请分享。时区不会因设备而异,因为我们在上面的代码中以编程方式设置它 - parserSDF.setTimeZone。如果您想按地区名称获取,you can get it using this solution.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2016-06-08
    相关资源
    最近更新 更多