2011-10-03 123 views
-1

如何將日期格式「2011-09-07T00:00:00 + 02:00」更改爲「dd.MM.」即「07.09」。如何在java中格式化日期?

在此先感謝!

+15

您是否搜索過「如何在java中設置日期格式?」在互聯網上甚至在這個網站?我不這麼認爲。 –

回答

2

基本上 -

  1. 從上面的字符串創建一個日期格式對象

  2. 解析成日期對象,無論你喜歡格式化。

例如(我沒有測試過這一點):

/* 
* REFERENCE: 
* http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/ 
*/ 
import java.text.DateFormat; 
import java.util.Date; 

public class DateFormatExample1 { 

    public static void main(String[] args) { 
     // Make a new Date object. It will be initialized to the current time. 
     DateFormat dfm = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss"); 
     Date d = dfm.parse("2011-09-07 00:00:00"); 

     // See what toString() returns 
     System.out.println(" 1. " + d.toString()); 

     // Next, try the default DateFormat 
     System.out.println(" 2. " + DateFormat.getInstance().format(d)); 

     // And the default time and date-time DateFormats 
     System.out.println(" 3. " + DateFormat.getTimeInstance().format(d)); 
     System.out.println(" 4. " + 
      DateFormat.getDateTimeInstance().format(d)); 

     // Next, try the short, medium and long variants of the 
     // default time format 
     System.out.println(" 5. " + 
      DateFormat.getTimeInstance(DateFormat.SHORT).format(d)); 
     System.out.println(" 6. " + 
      DateFormat.getTimeInstance(DateFormat.MEDIUM).format(d)); 
     System.out.println(" 7. " + 
      DateFormat.getTimeInstance(DateFormat.LONG).format(d)); 

     // For the default date-time format, the length of both the 
     // date and time elements can be specified. Here are some examples: 
     System.out.println(" 8. " + DateFormat.getDateTimeInstance(
      DateFormat.SHORT, DateFormat.SHORT).format(d)); 
     System.out.println(" 9. " + DateFormat.getDateTimeInstance(
      DateFormat.MEDIUM, DateFormat.SHORT).format(d)); 
     System.out.println("10. " + DateFormat.getDateTimeInstance(
      DateFormat.LONG, DateFormat.LONG).format(d)); 
    } 
} 
+0

你的第一個格式字符串不正確 - 月份是MM,而不是mm。 –

+0

...而你錯過了'T'和日期/時間戳的時區部分。 –

+0

我將獲得上述日期格式作爲XML文件的輸入,我需要將它轉換爲「dd.MM」 – Beginner

6

這裏是一個樣本

編輯代碼:

public static void main(String[] args) throws ParseException { 
    String input = "2011-09-07T00:00:00+02:00"; 
    SimpleDateFormat inputDf = new SimpleDateFormat("yyyy-MM-dd"); 
    SimpleDateFormat outputDf = new SimpleDateFormat("dd.MM"); 

    Date date = inputDf.parse(input.substring(0,9)); 
    System.out.println(date); 
    System.out.println(outputDf.format(date)); 
} 
+0

我將獲得上述日期格式作爲XML文件的輸入,我需要將其轉換到「dd.MM」 – Beginner

+0

@neha檢查您的要求的新代碼。如果你不理解它,請嘗試在eclipse中調試代碼。你應該能夠弄清楚 –

1

您的代碼需要一點點的修正在以下行上

Date date = inputDf.parse(input.substring(0,9)); 

代替(0,9)您需要輸入(0,10),您將獲得所需的輸出。

1

TL;博士

OffsetDateTime.parse("2011-09-07T00:00:00+02:00").format(DateTimeFormatter.ofPattern("dd.MM") 

java.time

問題等回答使用已被證明是麻煩和混亂的舊的遺留類。他們已經被java.time類取代。

您的輸入字符串採用標準的ISO 8601格式。這些格式在java.time類中默認使用。所以不需要指定格式化模式。

OffsetDateTime odt = OffsetDateTime.parse("2011-09-07T00:00:00+02:00"); 

您可以生成你想要的格式的字符串。

DateTimeFormatter f = DateTimeFormatter.ofPattern("dd.MM"); 
String output = odt.format(f); 

MonthDay

你想月份和日期的日。實際上有一個課程,MonthDay

MonthDay md = MonthDay.from(odt); 

您可以生成所需格式的字符串。

DateTimeFormatter f = DateTimeFormatter.ofPattern("dd.MM"); 
String output = md.format(f);