web-dev-qa-db-ja.com

Java.time.LocalDateTimeを複製する最良の方法

コピー_Java.time.LocalDateTime_を作成したいのですが、clone()メソッドがありません。

私は次のことをしています:

_long epochMilli = Instant.now().toEpochMilli();

LocalDateTime createDate =  LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.systemDefault());

LocalDateTime modificationDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.systemDefault());
_

まったく同じ日時値を持つ2つのLocalDateTimeオブジェクトを作成する最も簡単な方法はありますか?

13
zappee

LocalDateTimeは不変であるため、単純に同じオブジェクトを参照できます。

LocalDateTime createDate = LocalDateTime.now();

LocalDateTime modificationDate = createDate;
18
Jacob G.

LocalDateTimeは不変であるため、 Javadocによると 複製する本当の理由はありません。

同じインスタンスを使用するだけで、防御的にクローンを作成してパフォーマンスを低下させることなく、インスタンスを渡すことができます。

2
Ferrybig
LocalDateTime orig = LocalDateTime.now();
LocalDateTime copy = LocalDateTime.from( orig );

編集済み:このコードは、LocalDateTimeソースから同じオブジェクトを返します。

public static LocalDateTime from(TemporalAccessor temporal) {
       if (temporal instanceof LocalDateTime) {
          return (LocalDateTime) temporal;
       } 
       ...
2

不変なので、次のようにできます。

LocalDateTime copy = createDate.plusHours(0);
System.out.println(createDate.equals(copy)); // true

plusHours doc

指定された時間数を加算したこのLocalDateTimeのコピーを返します。このインスタンスは不変であり、このメソッド呼び出しの影響を受けません。

1
xingbin