2015-06-29 8 views
5

Как вы конвертируете Localdatetime в timestamp? Я хочу использовать новую дату SE 8 date, потому что она лучше, чем дата использования и календарь. Я планирую использовать localdatetime во всей своей программе, а затем поместить эту дату в базу данных mysql. Я искал ответ, но, похоже, не очень много вопросов и ответов для java.time. Это немного кода, который я тестирую. Это, насколько я понял.Convert java.time.LocalDateTime SE 8 to timestamp

 LocalDateTime c = LocalDateTime.now(); 

     java.sql.Timestamp javaSqlDate = new java.sql.Timestamp(c.getLong()); 

Думаю, мне нужно сначала преобразовать его в длинный, но я не знаю как. Api позволяет преобразовывать отдельные элементы, такие как месяц и день, но не для всей даты. Так как я уже здесь, как вы конвертируете обратно из timestamp? Должен ли я использовать jodatime?

Я попытался это:

LocalDateTime c = LocalDateTime.now(); 
ZoneId zoneId = ZoneId.systemDefault(); 

System.out.println("this:" + c); 

java.sql.Timestamp javaSqlDate = new java.sql.Timestamp(c.atZone(zoneId).toEpochSecond()); 

pst.setTimestamp(2, javaSqlDate); 

Это только сохраняет дату около 1970. system.print печатает текущую дату правильно. Я хочу сохранить текущую дату.

ответ

2

Прежде всего, вам следует решить, действительно ли вы хотите использовать LocalDateTime. Ниже приведены некоторые разъяснения по поводу разницы, взятой из here:

< ...> LocalDateTime не точка на линии времени, как Instant есть LocalDateTime только дата и время, как человек будет писать на заметку , Рассмотрим следующий пример: два человека, которые родились в 11 утра, 2 июля 2013 года. Первый родился в Великобритании, а второй в Калифорнии. Если мы спросим любого из них о дате их рождения, то будет выглядеть, что они родились в одно и то же время (это LocalDateTime), но если мы выставим даты на временной шкале (используя Instant), мы узнаем, что тот родился в Калифорнии на несколько часов моложе, чем родившийся в Великобритании (NB: для создания соответствующего Мгновенного времени нам нужно преобразовать время в UTC, вот где разница лежит). < ...>

Для того, чтобы добраться до Мгновенного, вы можете использовать метод getEpochSecond().

Чтобы получить долгое время от LocalDateTime, вы должны provide a timezone.

+0

Фактическая программа хранения дат в LocalDateTime. –