Próbuję pobrać wartości datownika z bazy danych, przekonwertować je do Kalendarza i przekonwertować je z powrotem do datownika, ale tracą one swoją dokładność.Konwertowanie pliku java.sql.Timestamp na java.util.Calendar bez utraty precyzji
Oto kod do odtworzenia problemu
import java.sql.Timestamp;
import java.util.Calendar;
public class Test {
public static void main(String[] args)
{
Timestamp timestamp = new Timestamp(112, 10, 5, 15, 39, 11, 801000000);
System.out.println("BEFORE "+timestamp.toString());
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestamp.getTime());
timestamp = new Timestamp(calendar.getTimeInMillis());
System.out.println("AFTER "+timestamp.toString());
}
}
Oto przykładowy wynik konwersji
BEFORE 2012-10-18 14:30:13.362001
AFTER 2012-10-18 14:30:13.362
Traci precyzji. Co mam zrobić, aby zachować wartość dziesiętną taką, jaka jest?
Próbowałem tego w moim ide, ale nie otrzymałem takiego wyniku, za każdym razem, gdy drukuje to samo - 'Calendar calendar = Calendar.getInstance(); \t \t Znacznik czasu znacznika = nowy znacznik czasu (nowa data(). GetTime()); \t \t System.out.println ("1 ->" + znacznik czasu); // \t \t Thread.currentThread(). Sleep (1000); \t \t calendar.setTimeInMillis (timestamp.getTime()); \t \t timestamp = new Timestamp (calendar.getTimeInMillis()); \t System.out.println ("2 ->" + znacznik czasu); ' –
Czy możesz podać więcej kontekstu? Skąd bierzesz te znaczniki czasu, w jaki sposób je generujesz? – axtavt
Zaktualizowałem przykład, przepraszam, że fałszywy wynik był moją winą. – William