2012-01-16 73 views
13

我試圖將字符串轉換爲日期格式。我嘗試很多方法來做到這一點。但沒有成功。我的字符串是「2012年1月17日」。我想將其轉換爲「2011-10-17」。 有人可以告訴我這樣做的方式嗎?如果你有任何經驗的例子,這將是一個真正的幫助!將字符串轉換爲日期格式在android

+0

不是一個真正的Android的問題 – Guillaume 2012-01-16 11:00:17

回答

25
public class DateFormatClass { 
    public static void main(String[] args) { 

     String mytime="Jan 17, 2012"; 
     SimpleDateFormat dateFormat = new SimpleDateFormat(
       "MMM dd, yyyy"); 
     Date myDate = null; 
     try { 
      myDate = dateFormat.parse(mytime); 

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

     SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd"); 
     String finalDate = timeFormat.format(myDate); 

     System.out.println(finalDate); 
    } 
} 
2

我建議使用Joda Time,它是用於Java中date/dateTime操作的最好和最簡單的庫,它是ThreadSafe(與Java中的默認格式化類相反)。

你使用這種方式:

// Define formatters: 
DateTimeFormatter inputFormat = DateTimeFormat.forPattern("MMM dd, yyyy"); 
DateTimeFormatter outputFormat = DateTimeFormat.forPattern("yyyy-MM-dd"); 

// Do your conversion: 
String inputDate = "Jan 17, 2012"; 
DateTime date = inputFormat.parseDateTime(inputDate); 
String outputDate = outputFormat.print(date); 
// or: 
String outputDate = date.toString(outputFormat); 
// or: 
String outputDate = date.toString("yyyy-MM-dd"); 

// Result: 2012-01-17 

它還提供了大量的會議日期的操作有用的方法(加一天,時間差,等)。它提供了大多數類的接口,以實現簡單的可測試性和依賴注入。

1

爲什麼要將字符串轉換爲字符串嘗試將當前時間以毫秒爲單位轉換爲字符串, 此方法會將您的毫秒轉換爲數據合成。

public static String getTime(long milliseconds) 
{ 

     return DateFormat.format("MMM dd, yyyy", milliseconds).toString(); 
} 

您還可以嘗試DATE FORMATE類以便更好地理解。

5
String format = "yyyy-MM-dd"; 
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.US); 
    System.err.format("%30s %s\n", format, sdf.format(new Date(0))); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
    System.err.format("%30s %s\n", format, sdf.format(new Date(0))); 

在PDT時間區域中運行時,將會產生以下輸出:

    yyyy-MM-dd 1969-12-31 
       yyyy-MM-dd 1970-01-01 

欲瞭解更多信息看here

1
You can't convert date from one format to other. while you are taking the date take you have take the date which ever format the you want. If you want the date in yyyy-mm-dd. You can get this by using following way. 

      java.util.Calendar calc = java.util.Calendar.getInstance(); 

     int day = calc.get(java.util.Calendar.DATE); 
     int month = calc.get(java.util.Calendar.MONTH)+1; 
     int year = calc.get(java.util.Calendar.YEAR); 

      String currentdate = year +"/"+month +"/"+day ; 
0
public static Date getDateFromString(String date) { 

    Date dt = null; 

    if (date != null) { 
     for (String sdf : supportedDateFormats) { 
      try { 
       dt = new Date(new SimpleDateFormat(sdf).parse(date).getTime()); 
       break; 
      } catch (ParseException pe) { 
       pe.printStackTrace(); 
      } 
     } 
    } 
    return dt; 
} 
+0

使用這種方法它對我的工作很好,我也可以以毫秒爲單位獲取日期。 – 2016-08-18 06:56:29

相關問題