2012-05-18 18 views
26

日付はこの形式(2012-11-17T00:00:00.000-05:00)です。私はこの形式をmm/yyyyに変換する必要があります。Java:指定されたオブジェクトを日付としてフォーマットできません

私はこの方法を試しましたが、私はこの例外を取得しています。あなたは1 DateFormatを持っていますが、次の2つが必要

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

public class DateParser {  
    public static void main(String args[]) { 
     String MonthYear = null;  
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("mm/yyyy");  
     String dateformat = "2012-11-17T00:00:00.000-05:00 
     MonthYear = simpleDateFormat.format(dateformat);  
     System.out.println(MonthYear);  
    }  
} 
+1

を 'てSimpleDateFormat#format'' Date'インスタンスではなく、 'STRING'が必要です。 最初に、 'SimpleDateFormat#parse'で文字列を' Date'に変換する必要があります。 –

答えて

52

DateFormat.formatのみDate値で動作します。

2つのSimpleDateFormatオブジェクトを使用する必要があります.1つは解析用、もう1つは書式設定用です。たとえば、次のように

// Note, MM is months, not mm 
DateFormat outputFormat = new SimpleDateFormat("MM/yyyy"); 
DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX"); 

String inputText = "2012-11-17T00:00:00.000-05:00"; 
Date date = inputFormat.parse(inputText); 
String outputText = outputFormat.format(date); 

EDIT:あなたもあなたのフォーマットでタイムゾーンおよび/またはロケールを指定することもできますし、あなたがで開始する代わりに、このすべてのJoda Timeを使用することを検討する必要があることに注意してください - それはですはるかに良い日時APIです。

+0

あなたの答えは私のものよりもよく見えます。もう1つの質問があります。どうすればこの日から17日である日付(2012-11-17T00:00:00-05:00)を得ることができますか? – Pawan

+0

@ yyyi777:文字列として、または整数値として? –

+0

唯一の文字列として – Pawan

4

Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Date 
    at java.text.DateFormat.format(Unknown Source) 
    at java.text.Format.format(Unknown Source) 
    at DateParser.main(DateParser.java:14) 

以下の私のコードを参照してください入力用と出力用の別。

あなたは出力のために1つを持っていますが、あなたの入力と一致するものは何も表示されません。入力文字列を出力形式に渡すと、その例外が表示されることは驚くことではありません。

DateFormat inputDateFormat = new SimpleDateFormat("yyyy-MM-ddhh:mm:ss.SSS-Z"); 
4

SimpleDateFormat.format(...)はDateをパラメータとして取り、Date to Stringをフォーマットします。だから、慎重に

1

私はそれを解決した表情のAPI、私はこのコードで問題が解決できると思われるこのよう

import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Locale; 

public class DateParser { 

    public static void main(String args[]) throws Exception { 

     DateParser dateParser = new DateParser(); 

     String str = dateParser.getparsedDate("2012-11-17T00:00:00.000-05:00"); 
     System.out.println(str); 
    } 


    private String getparsedDate(String date) throws Exception { 
     DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.US); 
     String s1 = date; 
     String s2 = null; 
     Date d; 
     try { 
      d = sdf.parse(s1); 
      s2 = (new SimpleDateFormat("MM/yyyy")).format(d); 

     } catch (ParseException e) { 

      e.printStackTrace(); 
     } 

     return s2; 

    } 

} 
0
public static String showDate(){ 
    SimpleDateFormat df=new SimpleDateFormat("\nTime:yyyy-MM-dd HH:mm:ss"); 
    System.out.println(df.format(new Date())); 
    String s=df.format(new Date()); 
    return s; 
} 

を持っている必要があります。

0

これが私の仕事:

String dat="02/08/2017"; 
long date=new SimpleDateFormat("dd/MM/yyyy").parse(dat,newParsePosition(0)).getTime(); 
java.sql.Date dbDate=new java.sql.Date(date); 
System.out.println(dbDate); 
関連する問題