Привет, У меня есть требование, когда мне нужно проверить дату с системным значением даты, но значение даты, которое у меня есть в БД, равно миллисекундам, поэтому ниже мой код, но проблема - это системная дата, получить значение месяца отображения неверно, его значение месяца отображения на один месяц меньше.Как получить дату из миллисекунд
Date now = new Date();
Long nowLong = now.getTime()/1000;
Integer unixTime = nowLong.intValue();
Calendar cal;
cal = Calendar.getInstance();
cal.setTimeInMillis(unixTime * 1000L);
Integer day = cal.get(Calendar.DAY_OF_MONTH);
Integer month = cal.get(Calendar.MONTH);
Integer hour = cal.get(Calendar.HOUR);
Integer minute = cal.get(Calendar.MINUTE);
String amPm = (cal.get(Calendar.AM_PM) == Calendar.PM) ? "PM" : "AM";
Integer year = cal.get(Calendar.YEAR);
System.out.println("day :" + day);
System.out.println("month :" + month);
System.out.println("hour " + hour);
System.out.println("minute " + minute);
System.out.println("amPm " + amPm);
System.out.println("year " + year);
Для этого выход дня: 3 месяца: 4 часа 3 минуты 13 AMPM PM года 2016 , но выход не является правильным. Может кто-нибудь мне помочь .
Когда вы говорите, что результат неправильный - что вы ожидали от вывода? –
(i) Почему вы переводите с эпохи миллисов в эпоху, а затем обратно в эпоху миллиса? (i) Почему вы используете объекты вместо примитивов? – assylias
Не используйте 'Integer' вместо' int'. В общем, не используйте 'Date' или' Calendar'. Используйте API даты/времени ([java.time'] (https://docs.oracle.com/javase/tutorial/datetime/iso/index.html)). –