findCalendarStart: time into Calendar: 1260575897
findCalendarStart: set hour : 13
findCalendarStart: after hour : 1249775897
findCalendarStart: after hour string: Thu Jan 15 11:09:35 UTC 1970
findCalendarStart: set minutes : 13
findCalendarStart: after minutes: 1250015897
findCalendarStart: what calendar returns: 1250015897
我在日历中放置一个日期(通过从今天开始的毫秒传递来初始化)。日历已正确初始化。在第一次计算中,我将一天中的小时更改为13.此时,startCalTime.set(Calendar.HOUR_OF_DAY,((new Integer(m.group(1))。intValue())* 2)-1);
我正在通过正确的小时值和分钟,因为我在记录器中看到它们。在我从今天的Date对象改变一天中的小时后,有什么可能导致日历出现这样的奇怪日期?
更多代码:
Calendar startCalTime = Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"));
Date d = new Date(creationTime);
startCalTime.setTime(d);
startCalTime.getTimeInMillis();
.. ..正则表达式
if(m.find()){
//SET HOUR OF DAY
_logger.warning("set hour 1 : " + new Integer((new Integer(m.group(1)).intValue())-1)); startCalTime.set(Calendar.HOUR_OF_DAY, new Integer(m.group(1)).intValue()-1 );
_logger.warning("after hour 1: " + new Long(startCalTime.getTime().getTime()));
_logger.warning("after hour 1 string: " + startCalTime.getTime().toString());
//SET MINUTE
_logger.warning("set minutes 1 : " + new Integer(m.group(2).toString()));
startCalTime.set(Calendar.MINUTE, new Integer(m.group(2)).intValue());
_logger.warning("after minutes 1: " + new Long(startCalTime.getTime().getTime()));}
谢谢,
culov
答案 0 :(得分:2)
让我们看看你如何初始化你的约会。我怀疑,自从纪元开始以来,你传递它秒而不是几毫秒 - 这个(秒,而不是毫秒)是定义Unix时间戳的方式。 Java使用毫秒来获得更好的粒度。
答案 1 :(得分:2)
Calendar startCalTime = Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"));
Date d = new Date(creationTime);
那里发生了什么? startCalTime
和creationTime
似乎没有关联,我认为它们应该是?
同样为了获得更好的性能/内存占用,请尽可能避免使用new Integer/Long
并改为使用Long/Integer.valueOf()
。
答案 2 :(得分:1)
您日历中的那些时间看起来不正确。如果那些应该是以毫秒为单位的时间,则126 .....表示只有350小时的时间,这看起来将近40年。
原因似乎是您的初始化并未真正将日历设置为今天的日期。最初的日期似乎只是这个时代的几个小时。
请发布更多代码,我们可以为您解决。