Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 如何将“MM dd yyyy hh:MM”字符串日期格式转换为GMT格式?_Java_Android - Fatal编程技术网

Java 如何将“MM dd yyyy hh:MM”字符串日期格式转换为GMT格式?

Java 如何将“MM dd yyyy hh:MM”字符串日期格式转换为GMT格式?,java,android,Java,Android,我的日期格式是MM dd yyyy hh:MM它不是当前日期,我必须发送此日期 发送到服务器之前,需要将此日期更改为GMT格式,但当我通过以下代码更改时: private String[] DateConvertor(String datevalue) { String date_value[] = null; String strGMTFormat = null; SimpleDateFormat objF

我的日期格式是MM dd yyyy hh:MM它不是当前日期,我必须发送此日期 发送到服务器之前,需要将此日期更改为GMT格式,但当我通过以下代码更改时:

private String[] DateConvertor(String datevalue)
        {
            String date_value[] = null;
            String strGMTFormat = null;
            SimpleDateFormat objFormat,objFormat1;
            Calendar objCalendar;
            Date objdate1,objdate2;
            if(!datevalue.equals(""))
            {
            try
            {
            //Specify your format
                objFormat1 = new SimpleDateFormat("MM-dd-yyyy,HH:mm");
                objFormat1.setTimeZone(Calendar.getInstance().getTimeZone());

                objFormat = new SimpleDateFormat("MM-dd-yyyy,HH:mm");
                objFormat.setTimeZone(TimeZone.getTimeZone("GMT"));

            //Convert into GMT format
            //objFormat.setTimeZone(TimeZone.getDefault());//);
             objdate1=objFormat1.parse(datevalue);
            //
            //objdate2=objFormat.parse(datevalue);


            //objFormat.setCalendar(objCalendar);
            strGMTFormat = objFormat.format(objdate1.getTime());
            //strGMTFormat = objFormat.format(objdate1.getTime());
            //strGMTFormat=objdate1.toString();
            if(strGMTFormat!=null && !strGMTFormat.equals(""))
             date_value = strGMTFormat.split(",");
            }
            catch (Exception e)
            {
                e.printStackTrace();
                e.toString();
            }
            finally
            {
            objFormat = null;
            objCalendar = null;
            }
            }
            return date_value;

        }
它并没有改变所需的格式,我已经尝试了上面的代码,首先尝试获取当前时区,然后尝试在转换GMT后将字符串日期更改为该时区。 谁来指引我


提前感谢。

请尝试以下代码。第一个sysout打印日期对象,该对象拾取默认操作系统时区,在本例中为IST。第二个sysout将日期转换为GMT时区后,以所需格式打印日期

SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy,HH:mm");

Date date = format.parse("01-23-2012,09:40");
System.out.println(date);

format.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(format.format(date));
如果您知道日期字符串的时区,那么在格式化程序中设置它。我假设您在GMT时区需要相同的日期格式

SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy,HH:mm");

Date date = format.parse("01-23-2012,09:40");
System.out.println(date);

format.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(format.format(date));

请尝试下面的代码。第一个sysout打印日期对象,该对象拾取默认操作系统时区,在本例中为IST。第二个sysout将日期转换为GMT时区后,以所需格式打印日期

SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy,HH:mm");

Date date = format.parse("01-23-2012,09:40");
System.out.println(date);

format.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(format.format(date));
如果您知道日期字符串的时区,那么在格式化程序中设置它。我假设您在GMT时区需要相同的日期格式

SimpleDateFormat format = new SimpleDateFormat("MM-dd-yyyy,HH:mm");

Date date = format.parse("01-23-2012,09:40");
System.out.println(date);

format.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(format.format(date));

您需要使用时区的方法:

返回要添加到UTC以获取此时区的标准时间的时间量(毫秒)。由于该值不受夏令时的影响,因此称为原始偏移

如果你也想考虑DST,你可能想要这个;-

if (tz.inDaylightTime(ret)) {
    Date dstDate = new Date(gmtDate.getTime() - tz.getDSTSavings());

    if (tz.inDaylightTime(dstDate) {
        gmtDate = dstDate;
    }
}
如果您正处于夏季时间更改的边缘,并且将通过转换返回标准时间,则需要进行最后一次检查

希望有帮助


-Hannes

您需要使用时区的方法:

返回要添加到UTC以获取此时区的标准时间的时间量(毫秒)。由于该值不受夏令时的影响,因此称为原始偏移

如果你也想考虑DST,你可能想要这个;-

if (tz.inDaylightTime(ret)) {
    Date dstDate = new Date(gmtDate.getTime() - tz.getDSTSavings());

    if (tz.inDaylightTime(dstDate) {
        gmtDate = dstDate;
    }
}
如果您正处于夏季时间更改的边缘,并且将通过转换返回标准时间,则需要进行最后一次检查

希望有帮助

-汉内斯