Controllare che una certa data rientri negli ultimi 10 giorni

di il
19 risposte

Controllare che una certa data rientri negli ultimi 10 giorni

Controllare che una certa data rientri negli ultimi 10 giorni. Come si fa con Java?
La data che ricevo è tipo così: 2019-11-01 e devo controllare che questa data rientri negli ultimi 10 gg. Grazie.

19 Risposte

  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    p0laster ha scritto:


    Controllare che una certa data rientri negli ultimi 10 giorni. Come si fa con Java?
    La data che ricevo è tipo così: 2019-11-01 e devo controllare che questa data rientri negli ultimi 10 gg. Grazie.
    Precisa prima quale classe/API intendi usare: java.util.Date? java.util.Calendar? La nuova Date/Time API da Java 8? La Joda-Time (predecessore della Date/Time API)?
  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    Come faccio a saperlo? Io la data la prendo usando Jsoup... Da un certo sito prendo la data di un certo post...
  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    Sai splittare le stringhe e contare quanti millisecondi ci sono in 10 giorni? Allora fatti un new Date(2019,11,1) e vedi quanti millisecondi è indietro rispetto a now() tramite getTime()
  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    p0laster ha scritto:


    Come faccio a saperlo? Io la data la prendo usando Jsoup...
    Con Jsoup estrai parti di html dalla pagina, quindi hai delle stringhe. Pertanto se parti da una data in stringa devi prima fare un parsing. E lo puoi fare sia nel modo classico con DateFormat/Date, sia con la Date/Time API da Java 8.

    Mostra un esempio di data in stringa ... per capire il formato.
  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    Forse non ho capito io, oppure è sfuggito a te, ho scritto sopra "2019-11-01" questo esempio di data che estraggo... e devo vedere se rientra negli ultimi 10 giorni
  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    p0laster ha scritto:


    Forse non ho capito io, oppure è sfuggito a te, ho scritto sopra "2019-11-01" questo esempio di data che estraggo... e devo vedere se rientra negli ultimi 10 giorni
    Bene, allora la soluzione ti è stata detta. A te il codice
  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    Attendo quindi una risposta Grazie mille.
  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    "A te il codice" significa che si attende da te una proposta ...
  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    Ho fatto System.out.println(Calendar.getInstance());


    E mi da questo
    java.util.GregorianCalendar[time=1574598608934,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Berlin",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=143,lastRule=java.util.SimpleTimeZone[id=Europe/Berlin,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2019,MONTH=10,WEEK_OF_YEAR=47,WEEK_OF_MONTH=3,DAY_OF_MONTH=24,DAY_OF_YEAR=328,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=30,SECOND=8,MILLISECOND=934,ZONE_OFFSET=3600000,DST_OFFSET=0]


    Ho sottolineato in neretto l'anno che è giusto, il giorno del mese che è giusto, l'ora che è giusta. Non capisco perchè nel mese segna 10 al posto che 11... dato che siamo a Novembre...
  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    Perché Gennaio vale 0
  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    p0laster ha scritto:


    Ho fatto System.out.println(Calendar.getInstance());
    Hai solo una data, quindi Calendar è meno utile/appropriato.
    La data che hai dato di esempio es. "2019-11-01" è già nel formato ISO Local Date, quindi puoi usare LocalDate e in generale la nuova Date/Time API:

    1) LocalDate.parse(" ...... ") ed ottieni un LocalDate
    2) Prendi il LocalDate "corrente": LocalDate.now()
    3) Dal "now" togli 10 giorni: minusDays(10) ed ottieni un ulteriore LocalDate
    4) Verifichi con compareTo() se il LocalDate parsato è compreso tra il LocalDate (-10gg) e il LocalDate (now).
  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    Ce l'ho fatta (credo)
        public static boolean recente_(String time) {
            try {
                SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd");
                String data = Calendar.getInstance().get(Calendar.YEAR) + "-";
    
                data += (Calendar.getInstance().get(Calendar.MONTH) + 1) + "-";
                data += Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
    
                long diff = myFormat.parse(data).getTime() - myFormat.parse(time).getTime();
                System.out.println(diff);
                if (diff <= 864000000) {//10 giorni
                    System.out.println(time);
                    return true;
                }
    
            } catch (Exception e) {
                System.err.println("    qualcosa non va nel calcolo del tempo");
            }
            return false;
        }
  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    p0laster ha scritto:


    Ce l'ho fatta (credo)
    Perché devi fare tutti 'sti giri quando bastano 4 (quattro) righe di codice con LocalDate ??
  • Re: Controllare che una certa data rientri negli ultimi 10 giorni

    andbin ha scritto:


    p0laster ha scritto:


    Ce l'ho fatta (credo)
    Perché devi fare tutti 'sti giri quando bastano 4 (quattro) righe di codice con LocalDate ??
    Ok, allora come si fa con LocalDate?
Devi accedere o registrarti per scrivere nel forum
19 risposte