2017-12-08 9 views
-1

日付文字列08-12-2017を2017-12-08(LocalDate)に変換しようとしていました。ここで私は日付形式をdd-MM-yyyyからyyyy-MM-ddに変更します。

String startDateString = "08-12-2017"; 
    LocalDate date = LocalDate.parse(startDateString); 
    System.out.println(date); 

をtried-ものです。また、フォーマッタを使用してみましたが、同じ結果、DateTimeParseExceptionを得ます。 2017-12-08のような出力を例外なく取得するにはどうすればよいですか?

+0

: '新しいのStringBuilder()、開始(追加6、10).append( ' - ')。append(start、3、5).append( ' - ')。append(start、0、2).toString() ' –

+1

構文解析のための明示的なフォーマットパターンを与える: 'LocalDate.parse(startDateString、DateTimeFormatter.ofPattern(" dd-MM-uuuu "))'。 –

答えて

3

try { 
    String startDateString = "08-12-2017"; 
    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); 
    System.out.println(sdf2.format(sdf.parse(startDateString))); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

アップデート(以下の更新を参照)、これを試してみてください - それは正確な形式にならJavaの8

String startDateString = "08-12-2017"; 
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); 
    DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); 
    System.out.println(LocalDate.parse(startDateString, formatter).format(formatter2)); 
+1

若い人に古くて古くから有名な「SimpleDateFormat」クラスを使うよう教えてください。特に、現時点のJavaの日時APIである 'java.time'から' LocalDate'を既に使用しているときは特にありません。これはとてもうまく動作します。 –

+1

@ OleV.V。指摘してくれてありがとう。私はDateTimeFormatterについて知らなかった)更新された答えを見てください。 –

1

まず、日付時刻の文字列表現を解析して、Dateオブジェクトにする必要があります。

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date date = (Date)formatter.parse("2011-11-29 12:34:25"); 

次に、Dateオブジェクトを好みの形式の文字列にフォーマットします。

DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy"); 
String mydate = dateFormat.format(date); 
+1

若い人に古くから有名な「SimpleDateFormat」クラスを使用するよう教えてください。特に、現時点のJavaの日時APIである 'java.time'から' LocalDate'を既に使用しているときは特にありません。これはとてもうまく動作します。 –

関連する問題