Как изменить формат даты в метке времени - PullRequest
1 голос
/ 27 июня 2019

Я использую подготовленное состояние для обновления моей таблицы sql. В настоящее время мой формат даты - гггг-мм-дд, как это сделать дд-мм-гггг.

    try {
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306?user=root&password=1234&useSSL=false");
        con.setAutoCommit(false);
        pstmt = con.prepareStatement(qry);
        sp = con.setSavepoint();
        System.out.println("Enter your name");
        String name = sc.next();
        System.out.println("Enter your contact number");
        long phoneNum = sc.nextLong();
        System.out.println("Purpose of visit");
        String purpose = sc.next();

        pstmt.setString(1, name);
        pstmt.setLong(2, phoneNum);
        pstmt.setString(3, purpose);

         java.sql.Timestamp  dd = new java.sql.Timestamp(new java.util.Date().getTime());
        pstmt.setTimestamp(4, dd);
        pstmt.setTimestamp(5, dd);
        pstmt.executeUpdate();
        con.commit();

Ответы [ 2 ]

2 голосов
/ 27 июня 2019

Ужасный класс java.sql.Timestamp теперь унаследован, больше не требуется с JDBC 4.2 и более поздних версий.Для работы с базой данных вместо этого используйте OffsetDateTime, возможно, настроив на / от Instant или ZonedDateTime.

LocalDate

Похоже, вам нужна только дата, без времени суток и без часового пояса или смещения от UTC.

Для представления только даты используйте класс LocalDate.

LocalDate ld = LocalDate.parse( "2019-01-23" ) ;  // By default, parses strings in standard ISO 8601 format: YYYY-MM-DD. 

Чтобы зафиксировать текущую дату, указав часовой пояс.

ZoneId z = ZoneId.systemDefault() ;
LocalDate ld = LocalDate.now( z ) ;

Чтобы сгенерировать текст, представляющий это значение, используйте DateTimeFormatter.

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MM-uuuu" ) ;
String output = ld.format( f ) ;

JDBC

Для записи объекта LocalDate в базу данных в столбце типа данных, аналогичного стандартному типу SQL DATE:

myPreparedStatement.setObject( … , ld ) ;

Извлечение из базы данных:

LocalDate ld = myResultSet( … , LocalDate.class ) ;
0 голосов
/ 27 июня 2019

Вы можете просто написать код ниже, чтобы изменить формат, как требуется.

java.sql.Timestamp dd = new java.sql.Timestamp(new java.util.Date().getTime());
String date = new java.text.SimpleDateFormat("dd-MM-yyyy").format(dd);
System.out.println(date);

Вывод: 27-06-2019

...