Ciò ha causato un bug di tipo Y2K nel mio software, se potete immaginare. La cosa strana è che il calcolo di anno dopo anno si verifica solo per due giorni all'anno, che sono meno sicuro su come risolvere i problemi.Java Il calcolo dell'anno data è disattivato per un anno per due giorni
L'output:
03-Jan-2013
02-Jan-2013
01-Jan-2013
31-Dec-2013 ** strange
30-Dec-2013 ** strange
29-Dec-2012
28-Dec-2012
27-Dec-2012
26-Dec-2012
25-Dec-2012
io non sono sicuro di quale parte della data utility Java potrebbe causare un errore del genere.
Il codice (dal momento che il test è così piccola ho incluso un programma di lavoro completo):
import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;
public class DateT {
private static String getFormattedBackscanStartTime(int days) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-YYYY");
Calendar workingDate = Calendar.getInstance();
workingDate.add(Calendar.DATE, -1 * days);
String formattedStartTime = dateFormat.format(workingDate.getTime());
return formattedStartTime;
}
public static void main(String args[]) {
for(int i = 35; i < 45; i++) {
System.out.println(getFormattedBackscanStartTime(i));
}
}
}
Penso che ne trarrai beneficio. https://forums.oracle.com/forums/thread.jspa?threadID=2096000 – Achrome
Ricorda che le classi 'Calendar' e' SimpleDateFormat' sono ora [legacy] (https://en.wikipedia.org/wiki/ Sistema legacy). Soppiantato dalle classi [java.time] (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html). Un approccio moderno utilizza invece le classi 'LocalDate',' ZoneId' e 'DateTimeFormatter'. –