2

私の Java アプリケーションでは、Mysql を使用しており、日付を次の形式で返しますyyyy-MM-dd hh:mm:ss。format でそれが必要ですがdd-MM-yyyy hh:mm a。変換は Hibernate VO クラスで行われます。

この目的のために、私はそのようにしています:

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CREATED_DATE")
private Date createdDate = new Date();

public Date getCreatedDate() {
    Date date = null;
    try {
        date = new SimpleDateFormat("dd/MM/yyyy hh-mm a")
                .parse(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(createdDate));
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return date;
}

public void setCreatedDate(Date createdDate) {
    this.createdDate = createdDate;
}

しかし、Parse 例外が発生します。

java.text.ParseException: Unparseable date: "2013-05-06 01:39:00"
    at java.text.DateFormat.parse(DateFormat.java:354)
    at com.sits.ec.valueObjects.MessageBoxVO.getCreatedDate(MessageBoxVO.java:64)

誰でも私にアドバイスをもらえますか?

4

7 に答える 7

1

これを試してください:

String time=new SimpleDateFormat("yyyy.MM.dd").format(Calendar.getInstance().getTime());
于 2013-06-24T11:55:40.537 に答える
1

試してみてください:

import java.util.*;
import java.text.*;

public class Example {
    public static void main(String[] args) {
        Date now = new Date();
        SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy hh:mm a")
        String s = df.format(now);
        System.out.println("Today is: " + s);
    }
}
于 2013-06-24T11:40:29.950 に答える
1

これがコードの根本的な誤りです。 a を受け入れて aDateを返しますDateDate文字列とは関係なく、絶対的な瞬間を表します。少なくとも外部 API を正しく理解していれば、実装を提案できるかもしれません。

于 2013-06-24T11:42:48.910 に答える
0

まず、日付オブジェクトを取得するために、日付をフォーマットして再度解析するのはなぜですか? 実際の日付オブジェクトを直接使用できます。

次に、 で日付をフォーマットしてから、 でformat1解析しようとしていますがformat2、これは と同じではありませんformat1。したがって、ParseException.

これが必要です。

public Date getCreatedDate() {
    return createdDate;
}
于 2013-06-24T11:39:23.420 に答える
0

yyyy-MM-dd hh:mm:ss日付形式の文字列表現をこの日付形式に解析しようとしているためですdd/MM/yyyy hh-mm a。それがどのように機能すると思いますか?

表現は一致する必要があります。

于 2013-06-24T11:41:01.640 に答える
0

試してみてください
String dateString = new SimpleDateFormat("dd-MM-yyyy hh:mm a").format(createdDate);
。これ以上必要なものはありません。

于 2013-06-24T11:41:18.047 に答える
0

return createdDate;は、あなたが必要とすることすべてです。

Dateオブジェクトをにフォーマットしてから、Stringそれを解析しStringてオブジェクトに戻しても意味がありませんDate

ところで、解析とフォーマット操作に同じフォーマット パターンを使用するとうまくいきます。

更新:日付をフォーマットされた文字列として使用したい場合は、これを使用できます:

public String getCreatedDateAsString() {
    return new SimpleDateFormat("dd-MM-yyyy hh:mm a").format(createdDate);
}

java.util.Date1.1.1.1980 GMT からの 1 ミリ秒を表すだけであり、時間形式などについてはまったく何も知りません。

于 2013-06-24T11:41:33.280 に答える