2011-12-21 31 views
0
long time = 1342580400; //This should be GMT: Wed, 18 Jul 2012 03:00:00 GMT 
Date date = new Date(time); 
SimpleDateFormat dateSdf = new SimpleDateFormat("dd MMM"); 
String strTime = dateSdf.format(date); 
System.out.println(strTime); //This gives me 16 Jan instead. 

任何想法?的Android SimpleDateFormat的和將來的日期

回答

1

如果您運行下面的代碼:

SimpleDateFormat dateSdf = new SimpleDateFormat("dd MMM yyyy hh:mm:ss Z"); 
    Date d = dateSdf.parse("18 Jul 2012 03:00:00 GMT"); 
    System.out.println(d.getTime()); 

你會得到輸出:1342580400000

所以你的問題是,你錯過了幾個數字。

+1

'缺少幾個numbers'意味着'新的Date()'需要毫秒,你提供秒... – WarrenFaith 2011-12-21 09:40:30

+0

@WarrenFaith,你是對的。我沒有意識到OP錯過了一個因子1000 – THelper 2011-12-21 09:43:31

+0

謝謝你不能相信我錯過了,我累了的眼睛。 – Maurice 2011-12-21 09:50:31

1
Date dt = new Date(); 

      // Fri Dec 02 17:23:13 GMT+05:30 2011 

      DateFormat gmtFormat = new SimpleDateFormat(); 
      TimeZone gmtTime = TimeZone.getTimeZone("GMT"); 
      gmtFormat.setTimeZone(gmtTime); 
      gmtFormat.format(dt); 
      Calendar new_c = gmtFormat.getCalendar(); 

      int hours = new_c.get(Calendar.HOUR_OF_DAY); 
      int minutes = new_c.get(Calendar.MINUTE); 
      int seconds = new_c.get(Calendar.SECOND); 

      mYear = new_c.get(Calendar.YEAR); 
      MMonth = new_c.get(Calendar.MONTH); 
      mDay = new_c.get(Calendar.DAY_OF_MONTH); 
      new_c.setTimeZone(tz); 

      MMonth = MMonth + 1; 

      String curdate = mDay + "-" + MMonth + "-" + mYear; 
1

看來你手動計算日期的時間是錯誤的。我嘗試下面的代碼:

long currTime = System.currentTimeMillis(); 

    Date date = new Date(currTime); 
    SimpleDateFormat dateSdf = new SimpleDateFormat("dd MMM"); 
    String strTime = dateSdf.format(date); 
    System.out.println(strTime); 

它給了我正確的日期即12月21日

相關問題