4

私はこのような文字列を持っています:

Mon, 14 May 2012 13:56:38 GMT

今、私は日付だけが欲しい、すなわち14 May 2012

そのために何をする必要がありますか?

4

3 に答える 3

8

それを行う適切な方法は、それをオブジェクトに解析し、Dateこの日付オブジェクトを希望どおりにフォーマットすることです。

DateFormat inputDF  = new SimpleDateFormat("EEE, d MMM yyyy H:m:s z");
DateFormat outputDF = new SimpleDateFormat("d MMM yyyy");

String input = "Mon, 14 May 2012 13:56:38 GMT";
Date date = inputDF.parse(input);
String output = outputDF.format(date);

System.out.println(output);

出力:

14 May 2012

このコードは

  • 保守が容易です(入力フォーマットが保持されている間に出力フォーマットがわずかに変更された場合、またはその逆の場合はどうなりますか?)
  • 間違いなく読みやすい

文字列の分割、固定インデックスの部分文字列、または正規表現に依存するソリューションよりも優れています。

于 2012-05-15T13:09:44.097 に答える
5

オブジェクトを提供する、をparse()使用して文字列を作成してみませんか。これをに与えると、など、必要な任意のフィールドにクエリを実行できます。DateFormatDateDateCalendarget(Calendar.DAY_OF_MONTH)

このようなもの...

SimpleDateFormat myDateFormat = new SimpleDateFormat("EEE, d MMM yyyy H:m:s z");
Date myDate = myDateFormat.parse(inputString);

Calendar myCalendar = Calendar.getInstance();
myCalendar.setTime(myDate);

String outputDate = myCalendar.get(Calendar.DAY_OF_MONTH) + " " + 
                    myCalendar.get(Calendar.MONTH) + " " +
                    myCalendar.get(Calendar.YEAR);

書くのに少し時間がかかるかもしれませんが、少なくとも、Calendar必要なフィールドを簡単に提供できるようになります(たとえば、フィールド値の1つを使用して何らかの処理を実行する場合)。また、計算や他の多くの目的にも使用できます。それはあなたがそれを持った後の日付であなたが何をしたいかに本当に依存します。

于 2012-05-15T13:09:08.183 に答える
-1

あなたはこれを使うことができます:

String st = "Mon, 14 May 2012 13:56:38 GMT";

for(int i=0;i<=st.length();i++){

  if (st.charAt(i)==':') {

  index=i;
  index=index-2;
   break;
  }


}

String onlyDate=st.substring(4,index).trim();
于 2012-05-15T13:15:39.553 に答える