java时间赋值问题..

设置一个Date的小时为9点赋值给Paymentlimittime,然后再设置为17点赋值给Paymentlimittimeend,结果Paymentlimittime和... 设置一个Date的小时为9点赋值给Paymentlimittime,然后再设置为17点赋值给Paymentlimittimeend,结果Paymentlimittime和Paymentlimittimeend的时间都是17点...
求答案...
重新new对象,也不行.
展开
 我来答
百度网友d098e2c
2013-09-12 · TA获得超过133个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:60.2万
展开全部
你赋值的时候是一个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);
用这样的方式才可以,对象直接等于另一个对象的话那就是把引用给了这个对象。
追问
非常感谢!
maye100
2013-09-12 · TA获得超过2650个赞
知道小有建树答主
回答量:1341
采纳率:100%
帮助的人:980万
展开全部
Date是对象,那么你在给Paymentlimittime赋值时是将Date的引用给了它,
接着你把Date改成了17点,那么指向Date的Paymentlimittime也就变成了17点

明白?

你应该重新创建一个Date对象,设置为17点,赋值给Paymentlimittimeend
追问
yes,第一个就给你了!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ghtcool1207
2013-09-12 · 超过16用户采纳过TA的回答
知道答主
回答量:93
采纳率:0%
帮助的人:46.5万
展开全部
在你儿个时间设置为17时,endDate的hours在内存中已经是17了,你要重新new一个endDate对象
endDate.setHours(9);
o.setPaymentlimittime(endDate);
EndDate e=new EndeDate();
e.setHours(15);
o.setPaymentlimittimeend(e)
这样才行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cwd690352278
2013-09-12 · 超过21用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:20.9万
展开全部
你enddate两次,改变的都是堆区的值,然后你用的时候用的是对象,该对象的引用在堆区里,改变了,话说你怎么还用setHours方法,都过时了,现在一般用Calendar。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
三江五湖四海
2013-09-12 · TA获得超过108个赞
知道答主
回答量:120
采纳率:100%
帮助的人:25.9万
展开全部
简单! 日期之间的转换,就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式