Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将GMT转换为设备时区的代码不工作_Java_Android_Calendar_Timezone - Fatal编程技术网

Java 将GMT转换为设备时区的代码不工作

Java 将GMT转换为设备时区的代码不工作,java,android,calendar,timezone,Java,Android,Calendar,Timezone,我有一个来自RSS提要的以下格式的时间输入: 2012年6月13日星期三17:05:44+0000 我需要输出为2012年6月13日星期三22:35:44 源时间将始终以GMT为单位,所需的输出时间将在设备时区内(可能是GMT+5:30或GMT-2:00或任何时间) 首先,我有一个带有GMT的日历实例,如下所示 Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); 然后在输入时间使用StringTokeni

我有一个来自RSS提要的以下格式的时间输入:

2012年6月13日星期三17:05:44+0000

我需要输出为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中不起作用。
有解决办法吗?请帮忙。

如果我理解正确,您只需要设置timezome

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

例如,将时区设置为巴黎

如果我理解正确,您只需要设置timezome

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setTimeZone("Europe/Paris");
例如,将时区设置为Paris,首先需要解析对象中的字符串值,然后可以在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);
首先,您需要解析对象中的字符串值,然后您可以在Date中设置时区,还可以借助Date使对象成为您的设备时区实例

下面的代码在我身边工作

    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);

谢谢朋友,这里你用“欧洲/巴黎”作为新时区。但在我的应用程序中,我不知道用户的时区。i、 e.输出时间可能因不同用户而异。好的,我理解,我不确定,但也许这个链接可以帮助您我已经检查过了,但没有这种方法来转换时区。谢谢朋友,这里您使用了“欧洲/巴黎”作为新时区。但在我的应用程序中,我不知道用户的时区。i、 e.输出时间可能因不同的用户而异。好的,我理解,我不确定,但也许这个链接可以帮助您我已经检查过了,但没有这样的方法来转换时区。只是好奇-什么时区距离GMT 5小时30分钟?输入时区是GMT。输出时间基于用户。如果用户在印度,则其GMT+5:30;如果用户在巴基斯坦,则其GMT+5:00,依此类推。请检查代码“calendar.setTimeZone(TimeZone.getDefault());”,它与普通java项目一样工作,但不像Android那样工作只是好奇-距离GMT 5小时30分钟是什么时区?输入时区是GMT。输出时间基于用户。如果用户在印度,则其GMT+5:30;如果用户在巴基斯坦,则其GMT+5:00,依此类推。请检查代码“calendar.setTimeZone(TimeZone.getDefault());”,它与普通java项目一样工作,但与Androides不同。。它不仅在IST(格林尼治标准时间+5:30)而且在所有时区都能正常工作。谢谢..是的。。它不仅在IST(格林尼治标准时间+5:30)而且在所有时区都能正常工作。谢谢