Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    21

    Selezionare la prima data disponibile di un dato giorno settimanale

    Cerco di essere il più chiaro possibile:
    avendo una data iniziale ed un giorno della settimana scelto dall'utente, devo prendere la data che corrisponde a quel dato giorno...

    ad esempio ho "9/7/2008" e "Lunedì"... il sistema dovrà quindi selezionare la data "14/7/2008" essendo il primo lunedì che incontra, io ho provato così... ma il while non mi funziona:

    codice:
    String sd = (dati.get(0));
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    Date data1 = new java.sql.Date(sdf.parse(sd).getTime());//mi prende la data di inizio
    String giorno_sett = dati.get(1);                                  //mi prende il giorno della settimana
    int gg_data = data1.getDay();
    int gg_scelto = -1;
            		
    if (giorno_sett.equals("Lunedì"))
    {
            gg_scelto = 1;
    }
    else if (giorno_sett.equals("Martedì"))
    {
    	gg_scelto = 2;
    }
    else if (giorno_sett.equals("Mercoledì"))
    {
    	gg_scelto = 3;
    }
    else if (giorno_sett.equals("Giovedì"))
    {
    	gg_scelto = 4;
    }
    else if (giorno_sett.equals("Venerdì"))
    {
    	gg_scelto = 5;
    }
    	
    
    //trova il giorno della settimana selezionato a partire dalla data di inizio specificata
    while (gg_scelto == gg_data)
    {
    	if (gg_data == 6)
    	{
    		//se è sabato, vai avanti di tre giorni e vai a lunedì
    		data1 = new Date(data1.getTime()+259200000);
    		gg_data = 1;
    	}
    	else
    	{
    	//altrimenti controlla il giorno successivo
    	data1 = new Date(data1.getTime()+86400000);
    	gg_data++;
    	}
    					
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Ma no!! Usa un GregorianCalendar. Per vedere il concetto, guarda questo mio vecchio post. Nell'esempio che avevo fatto, la data iniziale era il 1° del mese e determinavo il primo giorno che cade nel giorno della settimana richiesto.
    Nel tuo caso non partirai dal 1° del mese ma da un qualunque giorno. Il concetto però non cambia.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    21
    il fatto è che poi devo inserire la data in un database...
    facendolo con il Date sql mi semplificavo la vita...

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Ma per creare un java.sql.Date è sufficiente avere la data espressa in millisecondi... e questa informazione la trovi con un qualunque Calendar (GregorianCalendar, appunto).
    Quindi, lavorando direttamente con Date non ti semplifichi la vita, ma te la complichi.

    Come generare un java.sql.Date a partire da un oggetto GregorianCalendar:
    codice:
    GregorianCalendar gc = ...;
    
    java.sql.Date d = new java.sql.Date( gc.getTimeInMillis() );
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    21
    ok grazie

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.