Я конвертирую метку времени одной зоны в другую зону. Я получаю длинное значение, такое же, как и временную метку источника, которую мы даем.
source Date--› originalDate=2019-01-09 12:00:42 IST, длинное значение источника---›1547015442000
Я получаю то же исходное длинное значение после установки даты в календаре.
Я использую выходное длинное значение, установленное в Object Node в Apache Kafka
Код:
TimeZone timeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(timeZone);
Calendar cal = GregorianCalendar.getInstance(timeZone);
cal.setTime(originalDate);
Calendar result = GregorianCalendar.getInstance(timeZone);
result.set(Calendar.YEAR, cal.get(Calendar.YEAR));
result.set(Calendar.MONTH, cal.get(Calendar.MONTH));
result.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH));
result.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY));
result.set(Calendar.MINUTE, cal.get(Calendar.MINUTE));
result.set(Calendar.SECOND, cal.get(Calendar.SECOND));
result.getTime();
long finalTimestamp = result.getTimeInMillis();
Мы будем очень признательны за любую помощь.
Заранее спасибо
TimeZone
иCalendar
. Эти классы плохо разработаны и давно устарели. Вместо этого используйтеZoneId
иZonedTimeFormatter
из java.time, современного API даты и времени Java а>. - person Ole V.V.   schedule 21.03.2019Calendar
есть часовой пояс, у устаревшего классаDate
его нет, это голый момент времени. - person Ole V.V.   schedule 21.03.2019