如何从GMT TimeZone到IST TimeZone和Vice Versa在android中解析日期

Amr*_*ngh 14 java timezone android date simpledateformat

我正在开发一个项目,从后端IST(印度标准时间)获取日期/时间,如图所示"2013-01-09T19:32:49.103+05:30".但是当我使用以下DateFormat解析它时

DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Run Code Online (Sandbox Code Playgroud)

然后解析..

Date date = sdf.parse("2013-01-09T19:32:49.103+05:30");


System.out.println("XYZ ==============>"+date);
Run Code Online (Sandbox Code Playgroud)

以GMT格式显示日期作为输出即

Wed Jan 09 14:02:49 GMT+00:00 2013.
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用TimeZone类作为..

TimeZone timeZone=TimeZone.getTimeZone("IST");
sdf.setTimeZone(timeZone);
Run Code Online (Sandbox Code Playgroud)

但没有效果..

我怎么能得到一个Date具有日期IST格式而不是GMT 的类对象...

请提供适当的解决方案..

编辑:

这是代码的样子:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

TimeZone timeZone=TimeZone.getTimeZone("IST");
sdf.setTimeZone(timeZone);

Date date = sdf.parse("2013-01-09T19:32:49.103+05:30");
String formattedDate=sdf.format(date);

System.out.println("XYZ ==============>"+formattedDate);
Run Code Online (Sandbox Code Playgroud)

Evg*_*eev 28

日期没有任何时区.它只是自1970年1月1日00:00:00 GMT以来的毫秒数的持有者.使用与解析时相同的DateFormat,设置IST时区并设置日期格式,如下例所示

    DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
    Date date = sdf.parse("2013-01-09T19:32:49.103+05:30"); 
    sdf.setTimeZone(TimeZone.getTimeZone("IST"));
    System.out.println(sdf.format(date));
Run Code Online (Sandbox Code Playgroud)

产量

2013-01-09T19:32:49.103+05:30
Run Code Online (Sandbox Code Playgroud)

请注意,XX自1.7以来,X模式用于ISO 8601时区(-08:00).如果你在1.6尝试Z.有关格式模式的详细信息,请参阅SimpleDateFormat API

  • 但是如果我写zzz,输出仍然是GMT,如图所示:2013-01-09T14:02:49.103 + 0000 (2认同)