Cosa c'è che non va? Suppongo che se sottraggo 1ms dal 1 gennaio 1980 0: 0: 0 allora ho 1979. Ma devo sottrarre circa 500+ ms per questo. Per favore, dammi un suggerimento.La sottrazione di 1 ms porta a comportamenti imprevisti
val cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
cal.set(1980, 0, 1, 0, 0, 0)
val date = new Date
date.setTime(cal.getTimeInMillis()) // <- 1980 Jan 01 0:0:0
date.setTime(cal.getTimeInMillis() - 1) // <- 1980 Jan 01 0:0:0 too !!!
Aggiornato.
La soluzione è
val cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
cal.setTimeInMillis(0)
cal.set(1980, 0, 1, 0, 0, 0)
Solo un'ipotesi, ma forse internamente Calendar arrotonda i secondi? – Aaron
Provare a stampare il contenuto 'date' dopo la prima chiamata' setTime() '. Forse l'anno, il mese, il giorno, l'ora, il minuto e il secondo sono il valore che imposti, ma non i millisecondi. –
È un po 'di confusione. Non voglio usare Yoda Time o un'altra libreria di terze parti. Devo convertire anno, mese, giorno in millisecondi e poi ottenere l'ultimo millesimo di secondo. Voglio trovare la soluzione corretta per questo. Sfortunatamente, javadoc tace su tale situazione. – Ezhik