java calendar 毫秒,Java Calendar会随机添加毫秒数?

Hi I have something weird happening. I am simply taking a calendar object, converting it to its individual parts, and putting it back into a calendar (with or without any changes. In this case I make no changes). I mean, this should be cut and paste. I've also tried to create a calendar with calendar = Calendar.getInstance() and set everything manually. calendar.set(Calendar.YEAR, mStartYear); so on. Still gives wrong Calendar objects. I've tried also setting Milliseconds, always seem to have some garbage milliseconds.. But the time one way or another just is completely off. Maybe someone sees the stupid oversight, but I'm stumped.

Also this is an android application, but shouldn't matter for a basic Java library object.

Note Weekview is a datawrapper for one of the libraries I'm using. It has a start and an end calendar.

Here is what the debugger lists as in memory..

mEndDay = 19

mEndHour = 9

mEndMinute = 30

mEndMonth = 8

mEndYear = 2015

mSeekAmount = 0

mStartDay = 18

mStartHour = 23

mStartMinute = 0

mStartMonth = 8

mStartYear = 2015

Calendar calendarStart = Calendar.getInstance();

calendarStart.set(mStartYear,mStartMonth,mStartDay,mStartHour,mStartMinute);

Calendar calendarEnd = Calendar.getInstance();

calendarEnd.set(mEndYear,mEndMonth,mEndDay,mEndHour,mEndMinute);

I end up with

Start 1442363359161

End 1442363359161

calendarStart = {GregorianCalendar@20968} "java.util.GregorianCalendar[time=?,areFieldsSet=false,lenient=true,zone=America/Denver,firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2015,MONTH=8,WEEK_OF_YEAR=38,WEEK_OF_MONTH=3,DAY_OF_MONTH=18,DAY_OF_YEAR=258,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=6,HOUR_OF_DAY=23,MINUTE=0,SECOND=19,MILLISECOND=161,ZONE_OFFSET=-25200000,DST_OFFSET=3600000]"

calendarEnd = {GregorianCalendar@20969} "java.util.GregorianCalendar[time=?,areFieldsSet=false,lenient=true,zone=America/Denver,firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2015,MONTH=8,WEEK_OF_YEAR=38,WEEK_OF_MONTH=3,DAY_OF_MONTH=19,DAY_OF_YEAR=258,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=6,HOUR_OF_DAY=9,MINUTE=30,SECOND=19,MILLISECOND=161,ZONE_OFFSET=-25200000,DST_OFFSET=3600000]"

EXPECT

Start 1442638800000

End 1442676600000

mEndTime = {GregorianCalendar@20990} "java.util.GregorianCalendar[time=1442676600000,areFieldsSet=true,lenient=true,zone=America/Denver,firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2015,MONTH=8,WEEK_OF_YEAR=38,WEEK_OF_MONTH=3,DAY_OF_MONTH=19,DAY_OF_YEAR=262,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=9,HOUR_OF_DAY=9,MINUTE=30,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-25200000,DST_OFFSET=3600000]"

mName = {String@20991} "sleep"

mStartTime = {GregorianCalendar@20992} "java.util.GregorianCalendar[time=1442638800000,areFieldsSet=true,lenient=true,zone=America/Denver,firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2015,MONTH=8,WEEK_OF_YEAR=38,WEEK_OF_MONTH=3,DAY_OF_MONTH=18,DAY_OF_YEAR=261,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=11,HOUR_OF_DAY=23,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=-25200000,DST_OFFSET=3600000]"

Here is where I set it up initially..

WeekViewEvent weekViewEvent = dateWrapperParam.getWeekViewEvent();

Calendar endCalendar = weekViewEvent.getEndTime();

Calendar startCalendar = weekViewEvent.getStartTime();

Date endDate = endCalendar.getTime();

Date startDate = startCalendar.getTime();

mStartHour = startCalendar.get(Calendar.HOUR_OF_DAY);

mStartMinute = startCalendar.get(Calendar.MINUTE);

mStartDay = startCalendar.get(Calendar.DAY_OF_MONTH);

mStartMonth = startCalendar.get(Calendar.MONTH);

mStartYear = startCalendar.get(Calendar.YEAR);

mEndHour = endCalendar.get(Calendar.HOUR_OF_DAY);

mEndMinute = endCalendar.get(Calendar.MINUTE);

mEndDay = endCalendar.get(Calendar.DAY_OF_MONTH);

mEndMonth = endCalendar.get(Calendar.MONTH);

mEndYear = endCalendar.get(Calendar.YEAR);

解决方案

As per my comments under your question , there is only difference in seconds and milliseconds between startCalendar and calendarStart time, because that values were not reset.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值