sql >> Databáze >  >> RDS >> Mysql

EEE MMM dd HH:mm:ss ZZZ yyyy formát data na 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);

Používám moderní třídy v java.time balík. Všimnete si, že kód je nejen jednodušší, ale jakmile se seznámíte s plynulým stylem psaní novějších tříd, je také jasnější.

Pokud chcete být 100% moderní, měli byste se také podívat, zda váš nejnovější ovladač MySQL JDBC nepřijímá LocalDate přímo bez převodu na java.sql.Date . Mělo by.

Několik podrobností k poznámce

  • Pokud potřebujete, aby se váš kód spouštěl na počítačích mimo vaši kontrolu, vždy zadejte národní prostředí formátovacímu nástroji, jinak nebude možné řetězec data analyzovat v počítači s neanglicky mluvícím národním prostředím. Můžete použít Locale.ROOT pro národní prostředí neutrální (mluví anglicky).
  • Pokud můžete, vyhněte se třípísmenným zkratkám časového pásma. Mnohé jsou nejednoznačné. EET je skutečně jen poloviční časové pásmo, protože některá místa, kde se používá, jsou nyní na EEST (letní čas). Je lepší použít buď dlouhé ID časového pásma, jako je Europe/Bucharest nebo posun od UTC jako +02:00 .

Tyto body jsou platné bez ohledu na to, zda používáte DateTimeFormatter nebo SimpleDateFormat .

Pokud nemůžete nebo nechcete přejít na doporučené novější třídy, oprava vašeho kódu je:

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

Používám malá písmena zzz protože je zdokumentováno, že odpovídá třípísmennému názvu časového pásma, vím, že ZZZ funguje také. Přidal jsem locale. A co je možná nejdůležitější, v potřebném formátu jsem změnil YYYY (rok podle týdne) na yyyy (kalendářní rok) a DD (den v roce) do dd (den v měsíci). Všechny tyto dopisy jsou v dokumentaci .



  1. Nulové zablokování SQL podle návrhu – nějaké vzory kódování?

  2. Android:Jak dynamicky načíst obrázek ze serveru podle jeho názvu z SQlite

  3. Datový model realitní kanceláře

  4. Jak migrovat databáze na váš Reseller Server