Я пытаюсь сравнить две миллисекундные значения в Java. Один из календаря и один из System.currentTimeMillis()
. Однако, кажется, что значение из календаря всегда намного больше, чем значение из System.currentTimeMillis()
в правильное время.
Чтобы построить календарь, я анализирую строку даты в формате dd/MM/yyyy HH:mm
и помещаю ее составляющие в календарь (try-catch для краткости опущен).
Calendar obCal = null;
//Exception here shows invalid format
DateFormat DF = new SimpleDateFormat("dd/MM/yyyy HH:mm");
DF.parse(Date);
//Example string: 29/11/2011 16:30
String[] parts = Date.split("/");
obCal = Calendar.getInstance();
int Y = Integer.parseInt(parts[2].split(" ")[0]);
int m = Integer.parseInt(parts[1]);
int d = Integer.parseInt(parts[0]);
int H = Integer.parseInt(parts[2].split(" ")[1].split(":")[0]);
int M = Integer.parseInt(parts[2].split(" ")[1].split(":")[1]);
obCal.set(Calendar.YEAR, Y);
obCal.set(Calendar.MONTH, m);
obCal.set(Calendar.DAY_OF_MONTH, d);
obCal.set(Calendar.HOUR_OF_DAY, H);
obCal.set(Calendar.MINUTE, M);
obCal.set(Calendar.SECOND, 0);
obCal.set(Calendar.MILLISECOND, 0);
Проверка календаря после этого показывает, что он получает правильную дату и время. Затем я получаю значение миллисекунды начиная с эпохи obCal.getTimeInMillis()
и сохраняю его в виде количества секунд как long
long stamp = obCal.getTimeInMillis() / 1000L;
Когда я достигаю время, представленное строкой даты, и сравниваю метку времени из календаря с меткой времени System.currentTimeMillis()
, я обнаруживаю, что первая намного больше. Разница между текущим временем и календарным временем (curTime-calTime
) обычно где-то в районе -2,500,000
Что может быть причиной этого?
Спасибо