Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [JAVA] Standard date e confronto

    BUongiorno a tutti,

    sto lavorando con le servlet.

    Devo effettuare il confronto tra i valori di n header di tipo Last-Modified.

    Qual'è lo standard che rappresenta una data col seguente formato? ISO 8601?

    Thu, 24 Feb 2011 09:10:33 GMT

    Di seguito, come posso costruire in Java oggetti (GregorianCalendar?) a partire da tali date e dunque confrontarli, restituendo il valore più vicino alla data corrente?

    Buona giornata al forum.

  2. #2
    Come da RFC non viene specificato lo standard della data, si dice solo che è una HTTP-date.
    Usa un SimpleDateFormat per formattarla.
    lolide
    Java Programmer

    Informati

  3. #3
    uso un SimpleDateFormat in questo modo:

    SimpleDateFormat df = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss zzz");

    per formattare una data del tipo

    Thu, 24 Feb 2011 09:10:33 GMT

    Ricevo un errore di parsing.



    Per quale motivo?

    PS: ho provato anche con una 'z' soltanto, ricevo stesso errore.

  4. #4
    Originariamente inviato da ragnonerodocet
    SimpleDateFormat df = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss zzz");

    PS: ho provato anche con una 'z' soltanto, ricevo stesso errore.
    Con una z sola è la sintassi giusta.
    Comunque l'errore di parsing te lo da chi ? SimpleDateFormat ?

    Creando semplicemente l'oggetto non ti da errori, quindi l'errore di parsing te lo da quando ?

    Lo stack trace (sempre quando ti da un eccezione) ?
    lolide
    Java Programmer

    Informati

  5. #5
    codice:
    SimpleDateFormat df = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z");
    		try {
                Date parsed = df.parse(dateList[0].getValue());
                System.out.println(parsed.toString());
            }
            catch(ParseException pe) {
                System.out.println("ERROR: Cannot parse \"" + dateList[0].getValue() + "\"");
            }
    L'output è:


    ERROR: Cannot parse "Wed, 23 Feb 2011 20:01:25 GMT"

  6. #6
    Lo stack trace è:

    java.text.ParseException: Unparseable date: "Thu, 24 Feb 2011 10:42:20 GMT"
    at java.text.DateFormat.parse(DateFormat.java:337)

  7. #7
    L'eccezione che ti viene data perchè molto probabilmente non imposti il giusto timezone sull'oggetto SimpleDateFormat. Infatti l'esempio di data che hai inserito ha come timezone "GMT". Per porter fare il parising corretto di quella data ti basta usare il seguente codice:
    codice:
    String pattern = "EEE, dd MMM yyyy HH:mm:ss zzz";
    SimpleDateFormat df = new SimpleDateFormat(pattern, Locale.US);
    df.setTimeZone(TimeZone.getTimeZone("GMT"));
    Ciao, alla prossima

  8. #8
    EDIT: Ah si, serve aggiungere Locale come ha detto francesco.muia
    lolide
    Java Programmer

    Informati

  9. #9
    Perfetto, ora tutto gira alla perfezione.

    Vi rignrazio, buona giornata.

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.