1

入力文字列は 2012-07-27 で、出力は日付ですが、2012-07-27 のような同じ形式が必要です

私のコードは

DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    try {
        Date today = df.parse("20-12-2005");
        System.out.println("Today = " + df.format(today));

                 } catch (ParseException e) {
        e.printStackTrace();
    }

私の出力は

Fri Jul 27 00:00:00 IST 2012

しかし、文字列の代わりに 2012-07-26 23:59:59 のような日付オブジェクトを返したいのですが、助けてください

どんな助けでもとても感謝しています

4

7 に答える 7

7

日付の解析に使用したものと同じものSimpleDateFormatを使用して、日付を文字列にフォーマットできます。

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = formatter.parse("2012-07-27");
System.out.println(date1); // prints Fri Jul 27 00:00:00 IST 2012
System.out.println(formatter.format(date1)); // prints 2012-07-26
于 2012-09-06T13:01:03.220 に答える
1

まず、がその引数System.out.printlnのメソッドを暗黙的に呼び出すことに注意することが重要だと思います。toString引数は、Objectまたはそのサブクラスでなければなりません。AndDateのサブクラスですObject。そうは言っても、1.7のDate#toString実装を見てください。

public String toString() {
        // "EEE MMM dd HH:mm:ss zzz yyyy";
        BaseCalendar.Date date = normalize();
        StringBuilder sb = new StringBuilder(28);
        int index = date.getDayOfWeek();
        if (index == gcal.SUNDAY) {
            index = 8;
        }
        convertToAbbr(sb, wtb[index]).append(' ');                        // EEE
        convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' ');  // MMM
        CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd

        CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':');   // HH
        CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm
        CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss
        TimeZone zi = date.getZone();
        if (zi != null) {
            sb.append(zi.getDisplayName(date.isDaylightTime(), zi.SHORT, Locale.US)); // zzz
        } else {
            sb.append("GMT");
        }
        sb.append(' ').append(date.getYear());  // yyyy
        return sb.toString();
    }

Dateオブジェクトの文字列表現はとして指定されEEE MMM dd HH:mm:ss zzz yyyyます。これはまさにあなたが見ているものです。

Dateオブジェクトを別の形式で表示する場合は、SimpleDateFormatクラスを使用します。その唯一の目的は、Dateオブジェクトを文字列として表現する方法に柔軟性を追加することです。


また...

ばかげた回避策ではありますが、考えられる 1 つの方法は、独自のラッパー クラスを作成することです。

public class MyDate{
    private final Date d;
    private final SimpleDateFormat sdf;

    public(Date d, SimpleDateFormat sdf){
        this.d = d;
        this.sdf = sdf;
    }

    // not recommended...should only be used for debugging purposes
    @Override
    public String toString(){
        return sdf.format(d);
    }
}
于 2012-09-06T13:01:18.747 に答える
0

には「フォーマット」プロパティはありませんjava.util.Date。インスタンスは、あるDate瞬間を表す単純なオブジェクトです (事実上、その状態は、内部に保存されている UNIX タイムスタンプによってのみ定義されます)。

他の人が指摘したように、(たとえば) aSimpleDateFormatを使用してDateインスタンスを文字列に出力します。

于 2012-09-06T13:04:16.247 に答える
0
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse("2012-07-27");
System.out.println(dateFormat.format(date));
于 2012-09-06T13:04:29.807 に答える
0

SimpleDateFormat目的の出力形式で別のものを使用する必要があります ( format())

于 2012-09-06T12:59:21.213 に答える
0

String同じ を使用して、日付の表現を取得できますSimpleDateFormatformatメソッドはこれを行います:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2012-07-27");
System.out.println(sdf.format(date1);
于 2012-09-06T13:01:35.253 に答える