Mysql
 sql >> база данни >  >> RDS >> Mysql

EEE MMM dd HH:mm:ss ZZZ yyyy формат на датата в java.sql.Date

    LocalDate date4 = ZonedDateTime
            .parse(date, DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH))
            .toLocalDate();
    java.sql.Date date5 = java.sql.Date.valueOf(date4);

Използвам съвременните класове в java.time пакет. Забелязвате, че кодът не само е по-опростен, след като се запознаете с плавния стил на писане на по-новите класове, той е и по-ясен.

Ако искате да сте 100% модерни, трябва също да проверите дали последният ви MySQL JDBC драйвер няма да приеме LocalDate директно без преобразуване в java.sql.Date . Би трябвало.

Няколко подробности за отбелязване

  • Ако имате нужда кодът ви да се изпълнява на компютри извън вашия контрол, винаги давайте локал на вашия формататор или низът ви с дата не може да бъде анализиран на компютър с локал, който не е англоговорящ. Можете да използвате Locale.ROOT за неутрален локал (говори английски).
  • Ако можете, избягвайте съкращенията на часовата зона с три букви. Много от тях са двусмислени. EET всъщност е само половината часова зона, тъй като някои места, където се използва, сега са на EEST (лятно часово време). По-добре да използвате или дълъг идентификатор на часовата зона като Europe/Bucharest или отместване от UTC като +02:00 .

Тези точки са валидни, независимо дали използвате DateTimeFormatter или SimpleDateFormat .

Ако не можете или не искате да преминете към препоръчаните по-нови класове, корекцията на вашия код е:

    SimpleDateFormat formatnow 
            = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH); 
    SimpleDateFormat formatneeded = new SimpleDateFormat("yyyy-MM-dd");

Използвам малки букви zzz тъй като това е документирано, че съответства на трибуквено име на часовата зона, знам, че главни букви ZZZ също работи. Добавих локал. И може би най-важното е, че в необходимия формат промених YYYY (година на базата на седмица) до yyyy (календарна година) и DD (ден от годината) до dd (ден от месеца). Всички тези писма са в документацията .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Покажи потребители

  2. Извличане на данни от MySQL база данни в html падащ списък

  3. Намерете и заменете цялата база данни на mysql

  4. convert_tz връща нула

  5. MySQL - принудително да не се използва кеш за тестване на скоростта на заявката