2013-04-09 102 views
1

我的日期格式類似於「MM-dd-yyyy hh:mm」它不是當前日期,我必須將此日期 發送到服務器,但在發送它之前需要將此日期更改爲GMT格式,但是當我通過關注代碼:如何轉換「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。 任何人都可以引導我。

在此先感謝。

回答

2

請嘗試下面的代碼。第一個sysout打印日期對象,它挑選默認的OS時區,即我的情況下的IST。將日期轉換爲GMT時區後,第二個sysout以所需格式打印日期。

如果您知道日期字符串的時區,請在格式化程序中進行設置。我認爲你需要格林尼治標準時間的同一日期格式。

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

你需要使用的時區的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; 
    } 
} 

需要最後檢查,例如,通過轉換回到標準時間。

希望幫助,

-Hannes

相關問題