2017-04-20 8 views
-1

問題:指定された形式のFastDateFormatを使用してString to Dateを解析する方法

指定した日付に指定した日数を追加する必要があります。 この関数はDateクラスObjectを返す必要があり、FastDateFormatを使用する必要があります。

ソリューション:

私はコードを書いたが、私は、YYYY-MM-DD HHでの出力必要があります:mm:ssのを。

私は、この関数にconvertStringToDateから

public static void main(String[] args) throws ParseException { 
    String dateFormat="yyyy-MM-dd HH:mm:ss"; 
     String s2=addDate(dateFormat); 
     convertStringToDate(s2,dateFormat); 

    } 
    public static Date convertStringToDate(String dateInStr, String dateFormat) throws ParseException 
    { 
     FastDateFormat fdf=FastDateFormat.getInstance(dateFormat);//("yyyy-MM-dd HH:mm:ss"); 
     Date date = null; 
     date = fdf.parse(dateInStr); 
     System.out.println("From convertStringToDate "); 
     System.out.println(date); 
     return date; 
    } 
public static String addDate(String dateFormat) throws ParseException{ 
      FastDateFormat fdf=FastDateFormat.getInstance(dateFormat); 
      Calendar c = Calendar.getInstance();  
      c.add(Calendar.DATE,1); 
      String s1=fdf.format(c.getTime()); 
      System.out.println("From addDate "); 
      System.out.println(s1); 
      return s1; 
     } 

予想される出力の入力を渡す場合:convertStringToDateから

2017年4月21日午前17時01分31秒

OutputShownを:

Fri Apr 21 17:01:31 IST 2017 

誰でもガイドできます私はどのように上記の問題を解決する必要がありますか?

fdf.format(c.getTime()); 
return fdf.parse(fdf.format(c.getTime())); 

format方法は、文字列として書式あなたの日付を返します:あなたの方法の

+0

? 'Date'インスタンスを返すので、ここにはフォーマットはありません。正しい出力を見るには 'fdf.format(c.getTime());'を表示してください – AxelH

+2

あなたの要求は意味がありません、ごめんなさい。日付を特定の形式(たとえば '2017-04-21 13:16:13')で返す必要がある場合は、' String'を返す必要があります。特定の形式を 'Date' 。あなたがなぜそれを望んでいるのかを教えてくれたら、役に立つ方向に導くことができます。 –

+1

'FastDateFormat'は' SimpleDateFormat'に比べて利点があるようですが、2017年にはスレッドセーフである 'DateTimeFormatter'を含む新しいJavaの日付と時刻クラスを使うことをお勧めします。 –

答えて

2

最後の2行は意味がありません。最初の行ではformatを呼び出しますが、戻り値は何もしません。したがって、効果的に、この行は何もしません。

2行目では、最初に日付を文字列にフォーマットしてから、すぐに文字列を再度解析してDateオブジェクトにします。それも事実上効果がありません。 return c.getTime();と書いてあるだけです。

Dateオブジェクトは単独でフォーマットしていないことに注意してください。 Dateオブジェクトは、yyyy-MM-dd HH:mm:ssなどの特定の形式で自動的に印刷されるオブジェクトを持つことはできません。Dateオブジェクト自体は、書式設定自体について何も知らないためです。

代わりに、オブジェクトを使用してDateオブジェクトをStringにフォーマットし、その文字列を印刷する必要があります。例:

String text = fdf.format(c.getTime()); 
System.out.println(text); 
0

以下のコード行は、必要な形式で日付と時刻を出力します。

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Calendar cal = Calendar.getInstance(); 
    cal.add(Calendar.DATE,1); 
    System.out.println(dateFormat.format(cal.getTime())); 
+0

要件は次のとおりです。「関数はDateクラスを返す必要がありますオブジェクトとFastDateFormatを使用する必要があります。 "あなたのコードは本当にどちらもしません。 –

+0

私は最初の行が見えなかった謝罪(: –

0

これらのコード行で、あなたの問題:

fdf.format(c.getTime()); 
return fdf.parse(fdf.format(c.getTime())); 

は、あなたの目標はあなたが唯一の日付/時刻文字列にDateをフォーマットしますformat()メソッドを使用する必要が達成することは簡単です

String date = fdf.format(c.getTime()); 

解決策:

public static String addDate(String dateFormat){ 
     FastDateFormat fdf=FastDateFormat.getInstance(dateFormat); 
     Calendar c = Calendar.getInstance(); 
     c.add(Calendar.DATE,1); 
     String date = fdf.format(c.getTime()); 
     return date; 
} 
0

戻ってきたときにdateオブジェクトが返され、Dateオブジェクトをフォーマットすることができますが、出力をStringとして取得します。 Dateオブジェクトの書式は一定です。

FastDateFormat-fdf.format(c.getTime())を使用する場合。この部分は、Dateの形式を文字列として、必要な形式で指定しますが、解析してDateオブジェクトに変換しようとすると、以前のConstant形式になります。

FastDateFormatを使用すると、Dateオブジェクトの書式設定ではなく、Dateの書式付き出力を文字列として取得できます。さらに参考のために

チェックこのアウト - あなたはのSimpleDateFormatオブジェクトを作成するとDate Formatting

、あなたはパターン文字列を指定します。パターン文字列の内容によって、日付と時刻の形式が決まります。

コードは、SimpleDateFormatコンストラクタに渡されるパターン文字列に基づいて日付と時刻をフォーマットします。 formatメソッドによって返されるStringには、表示される書式付きの日付と時刻が含まれます。あなたが日付を印刷しない

-from Oracle Docs. 
関連する問題