用于将GMT转换为设备时区的代码无效

时间:2012-06-26 06:27:36

标签: java android calendar timezone

我从RSS提要中输入以下格式的时间:

Wed Jun 13 17:05:44 +0000 2012

我需要输出 2012年6月13日星期三22:35:44

源时间将始终为GMT,所需的输出时间将在设备时区(可能是GMT + 5:30或GMT-2:00或任何)。

首先,我有一个GMT的日历实例,如下所示。

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

然后在输入时使用StringTokenizer修改日历,如下所示。

calendar.set(Calendar.DAY_OF_MONTH, date);
calendar.set(Calendar.MONTH, month);
.
.
etc.

接下来我有以下代码:

calendar.setTimeZone(TimeZone.getDefault());

基本上,上述代码会将日历更改为设备时区。 现在的问题是上面的代码在正常环境下正常工作,但在Android 中无法正常工作。 有解决方案吗请帮忙。

2 个答案:

答案 0 :(得分:2)

首先,您需要DateFormat来解析Date对象中的字符串值,然后您可以在Date中设置时区以及您可以在日历对象将使用Date的帮助下创建Calendar对象是您的设备时区实例。

以下代码正在我这边工作

    String input_format = "EEE MMMMM dd HH:mm:ss Z yyyy";
    String input_value="Wed Jun 13 17:05:44 +0000 2012";
    Date date=null;

    SimpleDateFormat sdf = new SimpleDateFormat(input_format);
    try {
        date = sdf.parse(input_value);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    Calendar calendar = sdf.getCalendar();
    calendar.setTime(date);

答案 1 :(得分:-1)

如果我理解正确,你只想设置时区

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setTimeZone("Europe/Paris");

例如,将时区设置为巴黎