0

私はフォーマットの日付を持っていますEEE MMM dd HH:mm:ss zzz yyyy

これをに変換する必要がありますdd/MM/yyyy

私は次のことをしました:

SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
SimpleDateFormat fmtddMMyyyy = new SimpleDateFormat("dd/MM/yyyy");
java.util.Date d = fmt.parse("Mon May 28 00:00:00 IST 2012");<br>
String formattedDate = fmtddMMyyyy.format(d); 

印刷しようとするdと表示されます0027833001988071567

どこが間違っていますか?

4

2 に答える 2

2

あなたの実際のコードは、あなたが示しているものとわずかにしか関連していないと推測する必要があります. いくつかの実験とドキュメントのため。

おそらく、元の解析で例外がスローされ、印刷するすべてのものは日付操作とは何の関係もありません。

問題を解決するには

  • 変換したい文字列を出力します
  • 解析された日付を出力します
  • 変換された文字列を出力します
  • コンストラクター バリアントを Locale 引数と共に使用して、stackoverflow の全員がそれを再現できるようにします。アプリケーションはどこで実行されていても同じように動作します。

これらはすべて、コードを含むメイン メソッドのみを含む単純なクラスで行われます。

問題が解決しない場合は、コードとその出力を元に戻してください。

私のアドバイスを部分的に適用すると、次のようになります。

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

public class Experiment {
public static void main(String args[]) throws ParseException {
    SimpleDateFormat fmt = new SimpleDateFormat(
            "EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
    SimpleDateFormat fmtddMMyyyy = new SimpleDateFormat("dd/MM/yyyy",
            Locale.US);
    java.util.Date d = fmt.parse("Mon May 28 00:00:00 IST 2012");
    String formattedDate = fmtddMMyyyy.format(d);
    System.out.println(formattedDate);
}
}

どちらが出力されますか

28/05/2012
于 2012-05-28T14:20:30.933 に答える
1

試す:

String formattedDate = fmtddMMyyyy.format(d);

UPD:私は次の解決策を得ました:

SimpleDateFormat fmt = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);

正常に動作します(ロケール定義なしでは機能しませんでした)。月の名前と曜日の名前は、私が推測するように、ローカルではなく英語に従って定義するためです。

于 2012-05-28T13:35:42.683 に答える