java.util.Calendar 未报告正确的 timeInMillis

标签 java calendar

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 );

我正在传递正确的一天中的小时值和分钟值,因为我在记录器中看到它们。在我仅更改今天的日期对象中的小时后,可能会导致日历出现如此奇怪的日期?

更多代码:

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()));}

谢谢

库洛夫

最佳答案

让我们看看如何初始化日期。我怀疑您传递的不是毫秒,而是自纪元开始以来的 - 这(秒,而不是毫秒)是常规 Unix 时间戳的定义方式。 Java 使用毫秒来获得更好的粒度。

关于java.util.Calendar 未报告正确的 timeInMillis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1896332/

相关文章:

java - 如何使用比较器根据两个不同人的年龄和姓名进行排序?

java - 在android中使用公历获取当前的儒略日数

calendar - .ics 文件中的单日全天约会

java - 在 Java 中创建自定义周计数器?

Java 键码 194,那是什么键?

java - 在java中转换1900年之前的时间戳

java - Java、C++、C# 等如何使用 < 和 > 来解决这种特殊的语法歧义?

java - 创建一个生成另一个给定函数的 x 和 y 值的方法

ios - 日历应用程序 : How to sync moved items?

javascript - 仅在编辑模式-Sharepoint 页面上执行的脚本