1

java.sql.Timestamp が必要ですが、LocalDateTime から変換しようとすると失敗します。入力文字列が LocalDateTime に変換されたときに、2013-03-15T00:00:00.000 のように文字「T」が追加されたためです。何か案は?または、文字列をタイムスタンプに変換するより良い方法はありますか? 将来、時間を操作する必要がある場合に備えて、joda を使用したかっただけです。

ありがとう。

4

2 に答える 2

7

どうしてできないの

LocalDateTime ldt  = LocalDateTime.now();
Timestamp ts = new Timestamp(ldt.toDate().getTime());
于 2013-03-15T13:15:06.570 に答える
1

Java 8 time API を使用する最良の方法:

  LocalDateTime ldt = timeStamp.toLocalDateTime();
  Timestamp ts = Timestamp.valueOf(dateTime);

モデルに組み込まれた JPA で使用する場合 ( https://weblogs.java.net/blog/montanajava/archive/2014/06/17/using-java-8-datetime-classes-jpa ):

@Converter(autoApply = true)
public class LocalDateTimeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
    @Override
    public Timestamp convertToDatabaseColumn(LocalDateTime ldt) {
        return Timestamp.valueOf(ldt);
    }

    @Override
    public LocalDateTime convertToEntityAttribute(Timestamp ts) {
        return ts.toLocalDateTime();
    }
}

したがって、現在はタイムゾーンに依存しない相対時間です。さらに、それは簡単です:

  LocalDate ld = ldt.toLocalDate();
  LocalTime lt = ldt.toLocalTime();

フォーマット:

 DateTimeFormatter DATE_TME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")
 String str = ldt.format(DATE_TME_FORMATTER);
 ldt = LocalDateTime.parse(str, DATE_TME_FORMATTER);
于 2015-01-07T21:15:04.700 に答える