Почему вычитание этих двух эпох милли-милли (в 1927 году) дает странный результат?JAVA

Программисты JAVA общаются здесь
Anonymous
Почему вычитание этих двух эпох милли-милли (в 1927 году) дает странный результат?

Сообщение Anonymous »

Если я запускаю следующую программу, которая анализирует две строки даты, ссылаясь на время 1 секунды друг от друга и сравнивает их: < /p>
public static void main(String[] args) throws ParseException {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str3 = "1927-12-31 23:54:07";
String str4 = "1927-12-31 23:54:08";
Date sDt3 = sf.parse(str3);
Date sDt4 = sf.parse(str4);
long ld3 = sDt3.getTime() /1000;
long ld4 = sDt4.getTime() /1000;
System.out.println(ld4-ld3);
}

Вывод:
353

Почему ld4-ld3 , а не 1 (как я ожидал от разницы в одной секунде в Times), но 353 ? < /p>
Если я изменю даты на время на 1 секунду позже: < /p>
String str3 = "1927-12-31 23:54:08";
String str4 = "1927-12-31 23:54:09";
< /code>
Тогда ld4-ld3 < /code> будет 1 < /code>. < /p>

java Версия:
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Dynamic Code Evolution Client VM (build 0.2-b02-internal, 19.0-b04-internal, mixed mode)
< /code>
Timezone(`TimeZone.getDefault()`):

sun.util.calendar.ZoneInfo[id="Asia/Shanghai",
offset=28800000,dstSavings=0,
useDaylight=false,
transitions=19,
lastRule=null]

Locale(Locale.getDefault()): zh_CN


Подробнее здесь: https://stackoverflow.com/questions/684 ... -strange-r

Вернуться в «JAVA»