Joda 的DateTime
对象是不可变的,所以就像String
,当你改变一个值时,你会得到一个新的实例。所以:
DateTime initial = new DateTime( 1970, 1, 1, 22, 30, 0 );
DateTime dayUpdated = initial.withDate( 1980, 2, 3 );
DateTime timeUpdated = initial.withTime( 15, 20, 0, 0 );
// At this point, initial still contains 1970-1-1, 22:30
// dayUpdated is 1980-2-3 22:30
// timeUpdated is 1970-1-1 15:20
如果您要处理大量此类更改并希望减少垃圾收集器的负载,则可以使用MutableDateTime
可以直接修改的初始实例。
MutableDateTime mutable = new MutableDateTime( 1970, 1, 1, 22, 30, 0 );
mutable.setDate( 1980, 2, 3 );
mutable.setTime( 15, 20, 0, 0 );
// at this point, mutable contains 1980-2-3 15:20
在大多数常见情况下,拥有不可变对象的可预测性胜过拥有可变实例的好处,因此我建议采用第一种方法。