Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: [Java] jxl e Data

  1. #1

    [Java] jxl e Data

    ciao raga

    mi capita una cosa strana:

    creo un file exel con la libreria jxl e quando imposto la data (es 12/05/2010) in una cella con formato data , mi inverte il mese con il giorno nel file excel generato.

    ecco il codice che uso :

    codice:
    DateFormat customDate = new DateFormat ("dd/MM/yyyy");
    WritableCellFormat dateFormat = new WritableCellFormat (customDate);
    Date dd = new Date("12/05/2010");
    DateTime date = new DateTime(0,0,dd, dateFormat);
    sheet.addCell(date);
    la cella in execel mi esce in formato data dd/MM/yyyy , ma mi scambia i giorno e il mese .

    chi mi aiuta?
    ciao e grazie

  2. #2
    credo che il mio problema sia qui:

    Date dd = new Date("12/05/2010");

    perche deprecato è viene interpretato in modo non corretto.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fcorsa
    Date dd = new Date("12/05/2010");

    perche deprecato è viene interpretato in modo non corretto.
    Quel costruttore (deprecato) usa il parse(String) (anch'esso deprecato) e secondo la documentazione, accetta svariati formati, interpretando le cose con una logica abbastanza empirica.

    If the number is followed by a slash, it is regarded as a month (it is decreased by 1 to produce a number in the range 0 to 11), unless a month has already been recognized, in which case it is regarded as a day of the month.

    E questo fa pensare che il primo numero (12 nell'esempio) viene preso come "mese" perché è il primo numero a cui segue un /.

    Se devi parsare una stringa in Date si usa generalmente DateFormat/SimpleDateFormat di java.util. (a meno di usare API più specifiche di altre librerie).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    ciao andbin

    ho risolto in un metodo molto grossolano , posto il codice:

    codice:
    String datx="12/05/2010";
    String[] dat = datx.split("/");
    int giorno=Integer.parseInt(dat[0]);
    int mese=Integer.parseInt(dat[1]);
    int anno=Integer.parseInt(dat[2]);
    Date dd = new Date(anno-1900,mese-1,giorno);
    			
    DateTime date = new DateTime(0, i,dd, dateFormat);
    sheet.addCell(date);

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fcorsa
    Date dd = new Date(anno-1900,mese-1,giorno);
    Pure questo costruttore è deprecato!!

    Ripeto: DateFormat/SimpleDateFormat
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    DateFormat l'ho usato nel codice precedentemente postato e non và! forse lo uso male?

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fcorsa
    DateFormat l'ho usato nel codice precedentemente postato e non và! forse lo uso male?
    Quel DateFormat che hai usato è della JXL, non di Java SE.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    java.text.DateFormat

    se uso questo mi da errore su WritableCellFormat.

    come faccio?

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fcorsa
    java.text.DateFormat

    se uso questo mi da errore su WritableCellFormat.

    come faccio?
    Da quello che ho capito guardando il javadoc di JXL, quel DateFormat serve per dare un formato alle celle del documento ..... non per parsare/formattare in generale tra String e Date come invece fanno le classi in java.text.

    Deduzione finale: per le celle puoi certamente usare il DateFormat di JXL (e nota che a DateTime passi già un Date .... quindi JXL non "parsa" un bel nulla). Per parsare un String in Date usa java.text.SimpleDateFormat
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    ecco cosi funziona :

    codice:
    DateFormat customDate = new DateFormat ("dd/MM/yyyy");
    WritableCellFormat dateFormat = new WritableCellFormat (customDate);
    SimpleDateFormat formda = new SimpleDateFormat("dd/MM/yyyy");
    
    try {
     Date d = formda.parse("15/11/2010");
     DateTime date = new DateTime(0, i,d, dateFormat);
     sheet.addCell(date);
    } catch (ParseException e) {e.printStackTrace();}
    l'unica cosa è che non si trova più quando la stringa della data è in questo formato:"15/11/10",
    come posso risolvere senza effettuare una somma di 2000 (d.setYear(d.getYear()+2000) all'anno della data?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.