Java simpleDateFormat无法正确解析给定区域设置的日期



在我的代码中,我获取当前时间,然后根据"UTC"时区对其进行格式化,然后使用相同的时区对其解析,从而将其转换为日期。问题是,我得到的日期是"2016年7月20日星期三13:04:51 GMT+05:00"其格式化和解析如下面的代码

Calendar calendar = Calendar.getInstance();
    Date currentDate = calendar.getTime();
    //gives time as "Wed Jul 20 13:04:51 GMT+05:00 2016"
    dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
    dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
    String dateText = dateFormat.format(currentDate);
    //This formats dates as following "Wed, 20 Jul 2016 08:04:51 +0000"

现在,一切正常,时区GMT+05:00的时间转换为标准UTC,GMT+000:00在格式化日期中显示为+0000

 Date setteledDate = dateFormat.parse(dateText);

现在,如上所述分析日期会得到以下日期。"2016年7月20日星期三13:04:51 GMT+05:00"。问题是这个日期又是GMT+5我获取当前日期的全部目的是格式化它,而不是解析它,因为目的是根据"UTC"(GMT+00:0)获取当前日期。

请帮忙。

以SimpleDateFormat格式将Z替换为Z。

Calendar calendar = Calendar.getInstance();
Date currentDate = calendar.getTime();
//gives time as "Wed Jul 20 13:04:51 GMT+05:00 2016"
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String dateText = dateFormat.format(currentDate);
Log.e("date",dateText);
//output Wed, 20 Jul 2016 09:01:20 UTC
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
dateText = dateFormat.format(currentDate);
Log.e("date",dateText);
//output  Wed, 20 Jul 2016 09:02:04 GMT+00:00

//更新

SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
        TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
        try {
            Date date = dateFormat.parse("Wed Jul 20 13:04:51 GMT+05:00 2016");
            Log.e("date",date.toString());
        } catch (ParseException e) {
            e.printStackTrace();
        }

相关内容

  • 没有找到相关文章

最新更新