java时间赋值问题..
设置一个Date的小时为9点赋值给Paymentlimittime,然后再设置为17点赋值给Paymentlimittimeend,结果Paymentlimittime和...
设置一个Date的小时为9点赋值给Paymentlimittime,然后再设置为17点赋值给Paymentlimittimeend,结果Paymentlimittime和Paymentlimittimeend的时间都是17点...
求答案...
重新new对象,也不行. 展开
求答案...
重新new对象,也不行. 展开
7个回答
展开全部
你赋值的时候是一个date对象,就好比date对象一直在一个堆栈中存着的,你只是吧对象的地址给了Paymentlimittime和Paymentlimittimeend 当你用这俩变量去读取的时候,他们根据这个地址找到了同一个对象enddate ,所以你的enddate变化了,这个俩变量也会跟着变化,除非你newl两个新的date分别赋值,这样就不会一样了.
因为Date中的很多方法都是过时了,所以现在都是用Calendar来操作时间,你把Date ddd=enddate;替换成下面的代码:
Calendar calendar =Calendar.getInstance();
calendar.setTime(enddate);
calendar.set(Calendar.HOUR_OF_DAY, 17);
o.setPaymentlimittimeend(calendar.getTime());
另外说明:Date ddd=enddate;这个不是新new出来一个对象,这个依旧是吧enddate对象的地址给了ddd这个对象,说白了ddd还是enddate ,new一个对象是:
Date ddd=new Date();
ddd.setTime(enddate.getTime());
ddd.setsetHours(17);
用这样的方式才可以,对象直接等于另一个对象的话那就是把引用给了这个对象。
因为Date中的很多方法都是过时了,所以现在都是用Calendar来操作时间,你把Date ddd=enddate;替换成下面的代码:
Calendar calendar =Calendar.getInstance();
calendar.setTime(enddate);
calendar.set(Calendar.HOUR_OF_DAY, 17);
o.setPaymentlimittimeend(calendar.getTime());
另外说明:Date ddd=enddate;这个不是新new出来一个对象,这个依旧是吧enddate对象的地址给了ddd这个对象,说白了ddd还是enddate ,new一个对象是:
Date ddd=new Date();
ddd.setTime(enddate.getTime());
ddd.setsetHours(17);
用这样的方式才可以,对象直接等于另一个对象的话那就是把引用给了这个对象。
追问
非常感谢!
展开全部
Date是对象,那么你在给Paymentlimittime赋值时是将Date的引用给了它,
接着你把Date改成了17点,那么指向Date的Paymentlimittime也就变成了17点
明白?
你应该重新创建一个Date对象,设置为17点,赋值给Paymentlimittimeend
接着你把Date改成了17点,那么指向Date的Paymentlimittime也就变成了17点
明白?
你应该重新创建一个Date对象,设置为17点,赋值给Paymentlimittimeend
追问
yes,第一个就给你了!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在你儿个时间设置为17时,endDate的hours在内存中已经是17了,你要重新new一个endDate对象
endDate.setHours(9);
o.setPaymentlimittime(endDate);
EndDate e=new EndeDate();
e.setHours(15);
o.setPaymentlimittimeend(e)
这样才行
endDate.setHours(9);
o.setPaymentlimittime(endDate);
EndDate e=new EndeDate();
e.setHours(15);
o.setPaymentlimittimeend(e)
这样才行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你enddate两次,改变的都是堆区的值,然后你用的时候用的是对象,该对象的引用在堆区里,改变了,话说你怎么还用setHours方法,都过时了,现在一般用Calendar。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单! 日期之间的转换,就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |