我在我的日历实例上设置时间如下
private Calendar mCalendar = Calendar.getInstance();
public void onTimeSet(int hourOfDay, int minute, int second) {
int year = mCalendar.get(Calendar.YEAR);
int monthOfYear = mCalendar.get(Calendar.MONTH);
int dayOfMonth = mCalendar.get(Calendar.DAY_OF_MONTH);
Calendar lCalendar = Calendar.getInstance();
lCalendar.set(year, monthOfYear, dayOfMonth, hourOfDay, minute);
Date lDate = lCalendar.getTime();
if (lDate.before(new Date())) {
return;
} else {
mCalendar.set(year, monthOfYear, dayOfMonth, hourOfDay, minute);
setItemTime();
}
}
但是,在Calendar lCalendar 和 mCalendar 的两个实例上调用 getTime()时,我得到的时间日历实例化时,日历实例上设置的hourOfDay
和minute
参数不是实例化的。此外,如果我在任一实例上再次调用getTime()
方法,我会得到正确的时间。
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:2)
浏览部分字段操作 at Calendar Documentation
基本上,您设置的字段不是time
并且尝试获取time
而不是单个设置字段。根据文档,调用time
函数后,日历set(...)
不会立即更新。
在那里,阅读之间的行,
具体情况由具体日历类确定。
所以我想,无法提供通用答案。
答案 1 :(得分:0)
我无法重现你的问题。我在public partial class Prologue : Script{
public bool Panic = true;
// ...
}
之前遇到public class Class1
{
Prologue myPrologue = new Prologue();
//...
void AnotherMethod()
{
myPrologue.PrologueMission();
}
//...
void Update10()
{
if (myPrologue.Panic)
{
//code...
}
}
}
。它告诉我System.out.println()
有我设定的新小时和分钟。如果它们在实际时间之前(在我的计算机时钟上),则不会触及if
,当然,这意味着它保留了实例化的时间。您在计算机的时钟上的哪个时间尝试过,以及您对lDate
提出的论点是什么?
顺便说一句,您是否故意不使用mCalendar
参数?如果需要,您可以将其与其他人一起传递给onTimeSet()
。您可能还想先调用second
来摆脱它实例化的时间。