come trovare la data indicata è con nell'intervallo di date specificato

ecco il mio codice

boolean isWithinRange(String d)
{
    boolean withinDate = false;   
    try
    {
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = dateFormat.parse(d);
        withinDate = !(date.before(startDate) || date.after(endDate));
    }
    catch (ParseException parseException)
    {
     }
    return withinDate;
}

ingressi ingressi ingressi ingressi ingressi


2015-11-26 2015-11-26 - Copia

sia il ritorno vero, ma quello che ho richiesto è "2015-11-26" dovrebbe essere vero e "2015-11-26 - Copia" dovrebbe essere falso.


En title : How to find the given date is with in specified date range

9 Comments:

  1. questo perché SimpleDateFormat analizza felicemente "2015-11-26" e ignora la parte "- Copia".

    il javadoc dichiara:

    Parses text from the beginning of the given string to produce a date. The method may not use the entire text of the given string.

    per rilevare se è stata usata l'intera stringa, utilizzare invece il metodo parse(String source, ParsePosition pos). ParsePosition ti dice dove l'analisi si è fermata. basta confrontare questo con la lunghezza della stringa di data originale.

    1. ho bisogno di tagliare la stringa di data prima di parse?. c'è un altro modo senza tagliare la stringa di data.
  2. il problema qui è che stiamo passando il Formato Data 'YYYY-MM-DD'. questo verificherà l'input dato fino a questo formato.

    per esempio,

    static boolean isWithinRange(String d)
    {
        boolean withinDate = false;   
        try
        {
            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            Date date = dateFormat.parse(d);
            withinDate = !(date.before(startDate) || date.after(endDate));
        }
        catch (ParseException parseException)
        {
            parseException.printStackTrace();
         }
        return withinDate;
    }
    

    il codice di cui sopra fa eccezione perché stiamo passando formato Data come 'YYYY-MM-DD hh: mm: SS'. quindi questo troverà l'ora minuti e secondi

  3. public static void main(String[] args) {
        isWithinRange("2015-12-11 - Copy");
        isWithinRange("2015-12-11");
    
    }
    
    public static boolean isWithinRange(String d) {
        boolean withinDate = false;
        try {
            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            String dd = d.indexOf(" ") !=-1 ? d.substring(0, d.indexOf(" ")) : d; // Find valid String 
            if(d.equals(dd)){
            Date date = dateFormat.parse(d);
            withinDate = !(date.before(startDate)) || date.after(endDate)));
            }else{
                withinDate =false;
            }
        } catch (ParseException parseException) {
        }
        return withinDate;
    }
    
    1. questo funziona solo se d ha uno spazio come primo carattere che non fa parte della data. questo sarebbe ancora tornare true per qualcosa come 2015-12-11-Copy.
    1. l'utente ha bisogno di prendersi cura del primo spazio, ma lui / lei confondono su di esso, tagliare () gli spazi principali e in ritardo di stringa di input.
    1. troverete trim () [http://stackoverflow.com/questions/6652687/strip-leading-and-trailing-spaces-from-java-string]
  4. basta verificare se la dimensione è 10 prima del test:

    if (d.length!10) return false;
    

More similar articles:

  • come posso ottenere la data di ieri senza utilizzare Calendario in Java e senza un timestamp solo la data?
  • come convertire la data giapponese in formato data inglese?
  • DateFormat per analizzare l'anno corrente/mese/data se non sono specificati come parte del modello
  • errore di conversione formato data personalizzata per un altro utilizzando SimpleDateFormat
  • data parsing non fallisce con il formato non valido
  • come convertire una stringa in una data utilizzando SimpleDateFormat?
  • Java convertire millisecondo timestamp per data rispetto al fuso orario specificato
  • come trovare un intervallo in una tabella ordinata in cui una data colonna non ha un certo valore per un intervallo specificato
  • come forzare dateFormat a prendere esattamente il numero di caratteri specificato come valido?
  • perché la data formattata dà il secolo precedente
  • Dateformat non parse Stringa
  • ORA-01839 "data non valida per mese specificato" per a_date in cui clausola
  • java.text.ParseException: data non parseable quando si cerca di convertire "2013-07-01T04: 37: 14.771468Z" in tempo locale
  • come controllare l'ora selezionata nell'intervallo specificato?
  • come analizzare DateTime in questo formato? "martedì 22 dicembre 19: 16: 57 2015 UTC"
  • Dateformat: modello di formato basato sul valore della data
  • come trovare divisioni di numero su intervallo specificato?
  • conversione da stringa a data con eccezione nel parsing
  • perché string to date e back to string produce due stringhe diverse?
  • Java datetime format convert
  • come verificare la correttezza del mese solo dopo la seconda cifra?
  • data di registrazione nel formato '2014-09-03T13: 13: 08Z'
  • come visualizzare l'immagine "Game over" in Android per un tempo fisso e riavviare il gioco quando l'utente tocca lo schermo dopo un intervallo specificato?
  • creazione di un'onda sinusoidale singola nell'intervallo specificato
  • SimpleDateFormat per una data HTTP
  • analisi delle date Java con informazioni sul fuso orario troncato
  • OneLiner per ottenere una rappresentazione stringa del giorno della settimana, del giorno del mese e dell'ora secondo il locale predefinito
  • come creare un'annotazione personalizzata in Java che consenta ai parametri di avere un valore da un intervallo specificato?
  • qual è il formato data per "Fri giu 05 00: 00: 00 PDT 2015"
  • numero di nodi nell'intervallo specificato nell'albero AVL