2015-06-29 90 views
-1

我喜歡在我的PHP項目中使用SupportDate類,以便像使用工具箱一樣使用它,所以我也會在我的Android項目中使用它。Java/Android:如何格式化日期?

長的故事作了簡短:

這是SupportDate類:

import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Locale; 
import java.util.TimeZone; 

/** 
* Created by Alessandro on 28/06/2015. 
*/ 
public class SupportDate { 

    // Suppress default constructor for noninstantiability 
    private SupportDate() { 
     throw new AssertionError(); 
    } 

    public static String getCurrentDate(String format) { 
     if (format==null){ 
      format = "yyyy-MM-dd HH:mm:ss"; 
     } 

     final SimpleDateFormat sdf = new SimpleDateFormat(format); 
     sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
     final String utcTime = sdf.format(new Date()); 

     return utcTime; 
    } 

    public static String formatDate(String date, String format){ 
     if (date==null){ 
      date = getCurrentDate(null); 
     } 

     if (format==null){ 
      format = "dd-MM-yyyy"; 
     } 

     final SimpleDateFormat sdf = new SimpleDateFormat(format); 
     final String formattedDate = sdf.format(date); 

     return formattedDate; 

    } 

} 

這是我的使用,從數據庫中檢索到的值:

last_event_placeholder.append(SupportDate.formatDate(last_event,null)); 

last_event值是從SQLlite檢索到的字符串:2015-06-29 10:41:12

並在日誌中的錯誤是

java.lang.IllegalArgumentException: Bad class: class java.lang.String 

的方法formatDate

final String formattedDate = sdf.format(date);排謝謝你的幫助

+0

你最關心的是什麼?你想格式化日期? –

+0

是的,我想格式化日期dinamyc,在方法中傳遞格式作爲參數。謝謝 – sineverba

+0

我不明白你想要什麼。我給'20150303'和'yyyyMMdd'格式,是否返回字符串'2015-03-03 00:00:00'?而你使用SimpleDateFormat.format錯誤。它應該把Date對象作爲參數,而不是String。 http://developer.android.com/reference/java/text/DateFormat.html#format(java.util.Date) – calvinfly

回答

7

DateFormat.format預計數字或日期,但你正在傳遞一個字符串。通過你的日期字符串之前,你應該把它解析爲一個日期,例如像這樣:

DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS"); 
Date inputDate = inputFormat.parse(date); 

,然後通過這個inputDate您的SimpleDateFormatlikе這樣的:

final String formattedDate = sdf.format(inputDate); 

希望這有助於你:)

PS在這裏你可以找到更多的答案Caused by: java.lang.IllegalArgumentException: Bad class: class java.lang.String

0

我使用我自己的方法,你必須通過輸入格式,輸入日期時間戳字符串和預期的日期格式來獲取日期值在字符串中。 試試這個:

public static String getDesired(String desiredDateFormat, String inputFormat,String inputStringDate) { 

     try { 
      Date date = (new SimpleDateFormat(inputFormat)).parse(inputStringDate); 
      return (new SimpleDateFormat(desiredDateFormat)).format(date); 

     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    }