Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    324

    Problema con il calcolo delle settimane

    Ciao a tutti,

    apro questa discussione in quanto ho un problema con il calcolo delle settimane. Mi spiego meglio sto creando una applicazione che richiede l'inserimento delle ore lavorative, solo che al momento di stampare il giorni relativo alla domenica è sbagliato, o meglio in locale la visualizzazione del giorno è stampato in modo corretto, ma al momento di portare il tutto in remoto il giorno relativo alla domenica è sfasato.

    Sapreste dirmi come mai?

    Grazie anticipatamente.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Come recuperi la data?
    Cosa intendi per "porto in remoto"? Hai una applicazione client-server? Spiega meglio...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    324
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Come recuperi la data?
    Cosa intendi per "porto in remoto"? Hai una applicazione client-server? Spiega meglio...
    La data la recupero da un form che poi la casto in un oggetto Calendar. Per remoto intendo che carico il mio war o la mia applicazione attraverso Tomcat Manager sul server per poi da verificare il suo funzionamento, solo che quando vado nella sezione per caricare le ore, il giorno della domenica è sfata rispetto agli giorni. Questo perchè in locale il calcolo della settimana di quel determinato giorno vale 1 invece quando carico sul server l'applicazione vale 2. (per recuperare la settimana eseguo il comando "giorno.get(Calendar.DAY_OF_WEEK)" dove giorno è la variabile Calendar.

    Si la mia applicazione è client-server.

    Grazie anticipatamente

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    324
    up!!!!! qualcuno mi saprebbe aiutare pls...

    Grazie anticipatamente

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quote Originariamente inviata da manublack Visualizza il messaggio
    La data la recupero da un form che poi la casto in un oggetto Calendar.

    Specifica meglio la parte in grassetto, perchè il termine "castare" ha un significato ben preciso in programmazione, che nulla ha a che vedere con ciò che tu dovresti fare (cioè, un parsing). E secondo me il problema è proprio in questo passaggio, in particolare nell'assegnazione del valore del mese... ma senza vedere il codice che usi non posso saperlo.


    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

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    324
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Specifica meglio la parte in grassetto, perchè il termine "castare" ha un significato ben preciso in programmazione, che nulla ha a che vedere con ciò che tu dovresti fare (cioè, un parsing). E secondo me il problema è proprio in questo passaggio, in particolare nell'assegnazione del valore del mese... ma senza vedere il codice che usi non posso saperlo.


    Ciao.
    Scusami per aver usato termini non appropriati. O meglio castare non indica sempre un parsing di quel dato?

    Comunque ti posto subito il codice cosi con un esempio si potrebbe capire meglio:

    codice:
    if(time.getListaCommesse_Risorse().size() > 0){
        for(int y = 0; y < time.getListaCommesse_Risorse().size(); y++){
                 Associaz_Risors_Comm_DTO asscomm = (Associaz_Risors_Comm_DTO) time.getListaCommesse_Risorse().get(y);
                   for(int i = 1; i <= time.getElencoGiorni().size(); i++){
                            for(int x=0; x < time.getGiornate().size(); x++){
                                 if(time.getGiornate().get(x) != null){
                                     PlanningDTO giornata = (PlanningDTO) time.getGiornate().get(x);
                                     Calendar giorno = Calendar.getInstance();
                                     giorno.setTime(giornata.getData());
                                                                       if(giorno.get(Calendar.DAY_OF_WEEK) == 1 && i == 7){
                                                                             if((giorno.get(Calendar.WEEK_OF_MONTH)== z && giornata.getId_associazione() == 
                                               asscomm.getId_associazione()){
    %>        
                                                   <%=formattazioneGiorni.format(giorno.getTime()) %>
    <%
                                            }
                                                         }else if(giorno.get(Calendar.DAY_OF_WEEK) == (i+1) && i != 7){
                                             if(giorno.get(Calendar.WEEK_OF_MONTH) == z && giornata.getId_associazione() == 
                                                asscomm.getId_associazione()){
    %>    
                                                                           <%=formattazioneGiorni.format(giorno.getTime())  %>
    <%                        
                                              }
                                       }
                                } 
                           }
                     }
                     }
          }
    Spero possa essere d'aiuto.... questo codice è dentro una jsp...

    Grazie anticipatamente
    Ultima modifica di manublack; 16-01-2014 a 19:54

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Davvero c'è quella sbrodolata di roba dentro una JSP? O_O

    Comunque non mi pare ci sia nulla di strano in quel codice per quanto riguarda il Calendar ma ti consiglio di confrontare il DAY_OF_WEEK con la sua costante e non con un numero arbitrario.
    Ad esempio, quando fai
    giorno.get(Calendar.DAY_OF_WEEK) == 1

    cosa stai verificando? Che il giorno presente in "giorno" (pessimo nome per una data...) sia domenica?
    Allora fai così, no?

    giorno.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY

    Non cambia nulla ma è sicuramente più leggibile.

    Riguardo il tuo problema: se sul tuo pc oggi è domenica ma per il server è lunedì... verifica che non ci siano impostazioni strane attive (fusi orari, ora legale ecc)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    324
    grazie dei consigli provero a verificare se non sia un problema relativo al sistema operativo installato sul server o altre cose relative all'ora locale....

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quote Originariamente inviata da manublack Visualizza il messaggio
    O meglio castare non indica sempre un parsing di quel dato?
    Assolutamente no. Un cast e un parsing sono due cose assolutamente diverse.
    Con il parsing si parte da un dato in un determinato formato (ad esempio, una data scritta sottoforma di stringa, che per il PC non significa nulla se non una mera concatenazione di caratteri) per ottenere un dato "equivalente" in un altro formato (ad esempio, un oggetto Date, che rappresenta, invece, un preciso istante nel tempo). C'è una "modifica" del tipo di dato (e, in generale, la creazione di un nuovo tipo di dato diverso dal primo che conterrà i nuovi dati).

    Un cast, invece, non modifica proprio nulla. Serve solo ad ottenere più o meno informazioni su un determinato tipo di dato, che non cambia! Il cast funziona solamente secondo l'albero di ereditarietà dell'oggetto. Ad esempio, se ho un JEditorPane lo posso castare a JTextComponent o a JComponent o a Scrollable perchè un JEditorPane è un JTextComponent, ma è anche un JComponent ed è anche uno Scrollable... ma l'oggetto non cambia, né di forma, né di sostanza durante il cast... rimane assolutamente inalterato. Ciò che cambia è l'insieme dei metodi che posso vedere, in base alla classe a cui l'ho castato.

    Tornando al tuo problema, se il server su cui gira la tua applicazione ha un Locale diverso, potresti avere problemi. Perchè stai usando questo metodo:

    codice:
    Calendar giorno = Calendar.getInstance();

    Ovvero stai ottenendo l'oggetto Calendar con il Locale di default (cioè quello impostato nella macchina su cui gira). Se vuoi avere lo stesso tuo Locale devi passare questa informazione a getInstance(): ad esempio, per lavorare sempre con il Locale italiano:

    codice:
    Calendar giorno = Calendar.getInstance( Locale.ITALIAN );

    Però questo influenzerebbe l'orario, che difficilmente si traduce in un errore di giorno (se non in prossimità della mezzanotte per locali con poco "spiazzamento" di orario). Mi rimane il dubbio su cosa facciano esattamente queste righe:

    codice:
    PlanningDTO giornata = (PlanningDTO) time.getGiornate().get(x);
    
    e
    
    giornata.getData()

    Perchè posso presumere che la prima ritorni il riferimento ad un oggetto che tratta date e la seconda restituisca un oggetto Date, ma non so come lavorino, che cosa facciano di preciso. Noto, peraltro, che non c'è nessun "parsing" di date, quindi davvero non so che operazioni vengano fatte al suo interno, né quali dati ci siano a disposizione, come vengano trattati, da dove vengano prese ste date... boh.

    Sicuramente tutta quella pappardella non andrebbe messa dentro ad una JSP. Il "lavoro sporco" lo devono fare le Servlet. Le JSP dovrebbero solo occuparsi di visualizzare i dati che le Servlet lavorano, senza fare calcoli, elaborazioni o quant'altro.


    Ciao.
    Ultima modifica di LeleFT; 17-01-2014 a 14:27
    "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

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    324
    Quote Originariamente inviata da LeleFT Visualizza il messaggio

    codice:
    Calendar giorno = Calendar.getInstance( Locale.ITALIAN )
    Ciao LeleFT grazie mille per la mini spiegazione che mi hai fornito. Ho provato a fare come hai detto te ma non funziona nel senso che leggendo su internet Calendar supporta il TimeZone e non Locale per la geolocalizzazione. Solo che provando anche a usare il TimeZone non funziona...

    Grazie anticipatamente

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.