Java文字列の日付形式を変更する 質問する

Java文字列の日付形式を変更する 質問する

String日付を表すものを持っています。

String date_s = "2011-01-18 00:00:00.0";

Dateそれを に変換して 形式で出力したいと思いますYYYY-MM-DD

2011-01-18

どうすればこれを実現できるでしょうか?


さて、以下に取得した回答に基づいて、私が試したことは次のとおりです。

String date_s = " 2011-01-18 00:00:00.0"; 
SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss"); 
Date date = dt.parse(date_s); 
SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
System.out.println(dt1.format(date));

しかし、02011-00-1期待どおりではなく出力されます2011-01-18。何が間違っているのでしょうか?

ベストアンサー1

使用LocalDateTime#parse()(またはZonedDateTime#parse()文字列にタイムゾーン部分が含まれている場合、 をString特定のパターンで解析して にしますLocalDateTime

String oldstring = "2011-01-18 00:00:00.0";
LocalDateTime datetime = LocalDateTime.parse(oldstring, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"));

次にLocalDateTime#format()(またはZonedDateTime#format()) を使用して、 a を特定のパターンでLocalDateTimea にフォーマットします。String

String newstring = datetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println(newstring); // 2011-01-18

または、まだJava 8を使用していない場合は、SimpleDateFormat#parse()String特定のパターンの を に解析しますDate

String oldstring = "2011-01-18 00:00:00.0";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(oldstring);

次にSimpleDateFormat#format()Dateを特定のパターンでフォーマットしますString

String newstring = new SimpleDateFormat("yyyy-MM-dd").format(date);
System.out.println(newstring); // 2011-01-18

参照:


更新:この回答が投稿された後に質問に追加した失敗した試みによると、パターンは大文字と小文字が区別されます。java.text.SimpleDateFormatjavadoc個々の部分が何を表しているか。たとえば、Mは月を表し、mは分を表します。また、年はyyyy5 桁ではなく4 桁で表されますyyyyy。上記に投稿したコード スニペットをよく見てください。

おすすめ記事