Я хочу использовать конструктор по умолчанию для класса Timestamp в Java, но Eclipse указывает, что он устарел. Это конструктор:
Timestamp myDate = new Timestamp(2014, 3, 24, 0, 0, 0 ,0);
Eclipse рекомендует использовать конструктор по умолчанию Timestamp(long time)
но я не знаю, как его использовать.
Как насчет следующего метода?
int myYear = 2014;
int myMonth = 3;
int myDay = 24;
Timestamp ts = Timestamp.valueOf(String.format("%04d-%02d-%02d 00:00:00",
myYear, myMonth, myDay));
Использование JSR 310: API даты и времени (представленный в выпуске Java SE 8):
java.sql.Timestamp ts = java.sql.Timestamp.valueOf(
java.time.LocalDate.of(myYear, myMonth, myDay).atStartOfDay()
);
Создайте экземпляр java.util.Date
(не путать с java.sql.Date
) и пропустите его время в миллисекундах в качестве аргумента для Timestamp
. Вот пример:
Timestamp now = new Timestamp(new java.util.Date().getTime());
Существуют и другие способы создания экземпляра объекта java.util.Date
:
Использование Calendar
:
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date today = calendar.getTime();
Timestamp now = new Timestamp(today.getTime());
Использование DateFormat
или его дочернего класса SimpleDateFormat
.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date date = sdf.parse("2014/3/24");
Timestamp today = new Timestamp(date.getTime());
Настройте календарь на определенную дату, затем получите время в миллисекундах, используйте его в конструкторе метки времени:
new Timestamp(new GregorianCalendar(2014, 3, 24).getTimeInMillis());
Как объясняется в этом ответе, вы можете проанализировать его с помощью класса DateFormat:
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse("23/09/2007");
long time = date.getTime();
new Timestamp(time);
Вы можете использовать класс GregorianCalendar
GregorianCalendar cal = new GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second);
Timestamp ts = new Timestamp(cal.getTimeInMillis());
Если у вас есть строка в следующем формате, вы также можете сделать:
Timestamp ts = Timestamp.valueOf("2014-01-01 00:00:00");
Calendar.getInstance
вместо прямой работы с GregorianCalendar
.
int
переменныеmyYear
,myMonth
иmyDay
. Как я могу использовать их здесь:Timestamp ts = Timestamp.valueOf("myYear-myMonth-myDay 00:00:00");