【问题标题】:How to convert "MM-dd-yyyy hh:mm" String date format to GMT format?如何将“MM-dd-yyyy hh:mm”字符串日期格式转换为 GMT 格式?
【发布时间】:2013-04-09 12:28:03
【问题描述】:

我的日期格式就像 "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 之后尝试将字符串日期更改为该时区。 谁来指导我。

提前致谢。

【问题讨论】:

    标签: java android


    【解决方案1】:

    试试下面的代码。第一个 sysout 打印获取默认操作系统时区的日期对象,即在我的情况下为 IST。第二个 sysout 在将日期转换为 GMT 时区后以所需格式打印日期。

    如果您知道日期字符串的时区,请在格式化程序中进行设置。我假设您在 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));
    

    【讨论】:

      【解决方案2】:

      你需要使用TimeZone的getRawOffset()方法:

      Date localDate = Calendar.getInstance().getTime();
      TimeZone tz = TimeZone.getDefault();
      Date gmtDate = new Date(date.getTime() - tz.getRawOffset());
      

      它

      返回添加到 UTC 以获得该时区的标准时间的时间量(以毫秒为单位)。因为这个值不受夏令时影响,所以称为原始偏移量。

      如果您也想考虑 DST(您可能想要这个 ;-))

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

      如果您正处于夏令时更改的边缘,并且会通过转换返回到标准时间,则需要最后一次检查。

      希望对你有帮助,

      -汉尼斯

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-29
        相关资源
        最近更新 更多