我的代码输出是0,0,0。我期待0,-1,1代替。代码中有什么问题?为什么我不能在DateTime中添加或减去秒?
public static void main(String[]args){
DateTime dt1 = new DateTime();
DateTime dt2 = new DateTime(dt1); // dt2 = dt1
DateTime dt3 = new DateTime(dt1); // dt3 < dt1
DateTime dt4 = new DateTime(dt1); // dt4 > dt1
dt3.minusSeconds(10);
dt4.plusSeconds(10);
int result1 = dt1.compareTo(dt2);
int result2 = dt1.compareTo(dt3);
int result3 = dt1.compareTo(dt4);
System.out.println("Results " + result1 + " , " + result2 + " , " + result3);
}
答案 0 :(得分:6)
minusSeconds()
返回DateTime对象的副本。
你可以试试这个:
public static void main(String[]args){
DateTime dt1 = new DateTime();
DateTime dt2 = new DateTime(dt1); // dt2 = dt1
DateTime dt3 = new DateTime(dt1).minusSeconds(10); // dt3 < dt1
DateTime dt4 = new DateTime(dt1).plusSeconds(10); // dt4 > dt1
int result1 = dt1.compareTo(dt2);
int result2 = dt1.compareTo(dt3);
int result3 = dt1.compareTo(dt4);
System.out.println("Results " + result1 + " , " + result2 + " , " + result3);
}
答案 1 :(得分:1)
minusSeconds
和plusSeconds
会返回DateTime的副本。
您需要重新分配变量:
dt3 = dt3.minusSeconds(10);
dt4 = dt4.plusSeconds(10);
答案 2 :(得分:1)
DateTime
不可变。执行dt3.minusSeconds(10);
后,DateTime
引用的dt3
对象不会被修改;相反,它返回一个新的DateTime
对象。将您的代码更改为:
dt3 = dt3.minusSeconds(10);
dt4 = dt4.plusSeconds(10);
答案 3 :(得分:0)
编辑我的问题中的代码需要花费数年而不是秒(见下文)。这很容易让我们看看当我们做addYears时得到的时间( - 一些大的int)。我们得到的负值在数学上是可以的,但在现实生活中并没有使用。
public static void main(String[]args){
DateTime dt1 = new DateTime();
DateTime dt2 = new DateTime(dt1); // dt2 = dt1
DateTime dt3 = new DateTime(dt1); // dt3 < dt1
DateTime dt4 = new DateTime(dt1); // dt4 > dt1
MutableDateTime mdt1 = new MutableDateTime(dt1); // mdt1 = dt1
mdt1.addYears(-10);
dt3 = dt3.minusYears(10);
dt4 = dt4.plusYears(10);
int result1 = dt1.compareTo(dt2);
int result2 = dt1.compareTo(dt3);
int result3 = dt1.compareTo(dt4);
System.out.println("Results " + result1 + " , " + result2 + " , " + result3);
System.out.println("IMmutable is " + dt1);
System.out.println("mutable is " + mdt1);
mdt1.addYears(-10000);
System.out.println("mutable is " + mdt1);
}