13

Io uso questo modello SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"); in Windows e funziona, ma quando provo su Ubuntu 10.04 mostra un'eccezione play.exceptions.JavaExecutionException: Illegal pattern character 'Y'.Il carattere del pattern illegale 'Y' su Ubuntu

Cerco soluzione per questo e ho trovato che il modello dell'anno deve essere modificato in minuscolo: SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); e funziona.

Qualcuno può dirmi il motivo dietro questo perché in Windows funziona ma in Ubuntu non ha funzionato se uso 'Y' invece di 'y'?

Nota:

  1. gioco-1.2.3
  2. JRE:
    1. di Windows: java version "1.7.0_03" Java(TM) SE Runtime Environment (build 1.7.0_03-b05) Java HotSpot(TM) Client VM (build 22.1-b02, mixed mode, sharing)
    2. Ubuntu: java version "1.6.0_31" Java(TM) SE Runtime Environment (build 1.6.0_31-b04) Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
  3. Windows 7
  4. Ubuntu 10.04

Aggiornamento 24/05/2012

Dopo che prova di nuovo nel mio sistema, v'è 3 JRE e le mie finestre utilizzando JRE1.7 per impostazione predefinita. Ma per Play ho impostato l'esecuzione usando JRE1.6.

+4

Perché l'implementazione di Ubuntu segue la documentazione dell'API? Senza scavare nella fonte, questa potrebbe essere solo una risposta di opinione, ma qualcun altro potrebbe saperne di più. –

risposta

21

Ho cercato SimpleDateFormat e ho ottenuto il doc da Oracle.

Funziona nella mia finestra perché ho impostato il JRE predefinito su 1.7, ma continuo a utilizzare JRE1.6 per Play Framework.

enter image description here

funziona su Windows a causa di questo, ha aggiunto JRE1.7 modello 'Y' per Week year e in JRE1.6 non v'è alcun motivo per questo.

14

Y non è un modello valido. y è.

Come per il docs:

Letter Date or Time Component  Presentation Examples 
G  Era designator    Text   AD 
y  Year      Year   1996; 96 
M  Month in year    Month   July; Jul; 07 
w  Week in year    Number   27 
... 

Non so il motivo per cui Y dovrebbe funzionare in Windows, ma non è documentato. y è quello corretto. E il più sicuro

+0

Forse perché il JRE diverso che utilizzo? Per Windows sto usando JRE da Oracle ma non sono sicuro che Ubuntu utilizzi lo stesso JRE, perché un'altra persona sta installando per me. – Crazenezz

+1

@Crazenezz - esegui 'java -version' –

+0

@StephenC: Grazie, aggiungi qualche nota riguardante il JRE – Crazenezz