11. oktober 2001 - 10:59Der er
37 kommentarer og 1 løsning
Opfølgning på dato spg.
Hej, Jeg vil lige først priorter, at jeg har læst: http://www.eksperten.dk/spm/119326 og http://www.eksperten.dk/spm/119303 Jeg har haft lidt af det samme problem, som funkoo. Jeg skal have samlignet to dato. En fra databasen med en dato. Da datoen i databasen er i yyyy/mm/dd har jeg lave en på side som er efter denne format: <%! String date (Calendar c) { return \"\"+c.get(Calendar.YEAR)+\"-\"+c.get(Calendar.MONTH)+\"-\"+c.get(Calendar.DAY_OF_MONTH); } %> Hvordan skulle jeg ellers have gjort det? Jeg laver så samligningen: <% if (rs.getDate(\"FERIESTART\").compareTo(date(c)) >=0) {%> <b>Du har ikke ferie endnu!!</b>
<%} %> rs er resultSet som henter en dato fra databasen!!
Jo lige en ekstra ting!! Er der en simpel måde at lave databasens dato om til uger (2001/01/15 -> uge 3)?
Du kan bruge simpleDateFormatter (hedder den vist) til at formattere som du ønsker det)
din .getDate() på et resultset returnerer en Date ud fra den laver du et GregorianCalendar objekt, og kalder en .get(WEEK_OF_YEAR) så har du uge nummeret.
Det tager lige et stykke tid. Jeg skal lige finde ud af hvordan \"simpleDateFormatter \" virker. Tager jeg fejl eller skal jeg implementer simpleDateFormatter i en java-fil?
Jeg kan nemlig ikke se sammenhængen i det, med det jeg skal lave! Jeg kan fra min jsp side kalde datoen for ferie ved rs.getDate(FERIESTART) Den ligger jeg over i Date ferie, og ved <%= ferie%> kommer datoen \"2001-10-24\". Jeg har lige læst, at man kan konventer det brugeren indtaster til den format, man skal bruge for at lægge den i databasen! Lige nu kan jeg kun tænke mig til at bruge \"SimpleDateFormat\" ved:
SimpleDateFormat formatter = new SimpleDateFormat (\"yyyy-MM-dd\");
String strDateString = formatter.format(rs.getDate(FERIESTART));// eller kunne jeg her kalde current date()?
Kan du ikke hjælpe mig med det andet så!! \"laver du et GregorianCalendar objekt, og kalder en .get(WEEK_OF_YEAR) så har du uge nummeret. \" Hvordan gør jeg det?
Det var sku´ rart at høre fra dig! (Troede du havde opgivet mig. *S*) Ser du, det har jeg prøvet, men serveren kommer fejlmeddelsen at den ikke ka konventere en int til en String.
Men går jeg tilbage til det jeg skal lave: Date feriestart=rs.getDate(\"FERIESTART\"); kalender.disconnect(); Calendar cal = new GregorianCalendar(feriestart); int uge=cal.get(Calendar.WEEK_OF_YEAR); Får jeg fejlmeddelsen:
Can\'t convert java.util.Date to java.util.Locale. Calendar cal = new GregorianCalendar(feriestart); ^ 1 error
Men hvis \"GregorianCalendar(2001,7,1);\" virkede hvorfor hvorfor virker comparing ikke ved Date feriestart=rs.getDate(\"FERIESTART\"); kalender.disconnect(); --> SimpleDateFormat formatter = new SimpleDateFormat (\"yyyy,MM,dd\");
--> String strDateString = formatter.format(feriestart); Calendar cal = new GregorianCalendar(strDateString); int uge=cal.get(Calendar.WEEK_OF_YEAR);
Ja nu virker det!! Er du tilfreds hvis du får 20 points for dette!! Jeg har stadig ikke fundet ud af at samligne to date?? Men jeg vil bøje mig hvis du sagde nej, jeg tror ikke jeg kan undvære dig i fremtidigen!!
Du får dagens dato (lige efter dit format)ved at skrive: <%! Date dagensDato = new Date(); SimpleDateFormat formatter = new SimpleDateFormat(\"yyyy-MM-dd\"); String getDate() { return formatter.format(dagensDato); } %> <%=getdate%>
Jamen så gør vi det!! Du har fået (ferie)ugetallet for databasen ikk´ sandt! For at få ugetallet for dagens dato skriver du: <% Calendar c = Calendar.getInstance(); int dagensUge= c.get(Calendar.WEEK_OF_YEAR)+1;// lægger en til fordi som disky siger (januar =0) %>
<% if (uge!=dagensUge){ %> <b>ferie og ugetallet er ikke ens </b> <%} %> Så skulle det virke!!
Tak, det virker nu! Iøvrigt ved du hvordan jeg selv kan bestemme hvor resultSet skal placeres. Jeg skal have lavet en kalender, hvor jeg lodret har personer placeret (i rækker) og vandret(kolonner) har uger! Jeg bruger databasen til at hente de personer som har ferie. Og udfra dem vil de kolonner som er i personens ferieperiode blive afkrydset!! Og kan du hjælpe mig på vejen vil du selvfølgelig få flere point. Dette er jo et nyt spørgsmål!!
Ja jeg fik smmenligning af uger til at virke! Men jeg ved ikke om det holder i længden(synes det er lidt primitivt kodet). Du kan lige se hvordan jeg har gjort det: <%! int ugekonvertering (Date ugestring){ Calendar cal = new GregorianCalendar(new Locale(\"da\",\"DK\")); cal.setTime(ugestring); int uge=cal.get(Calendar.WEEK_OF_YEAR); return uge; } %> - - <% Date feriestart=rs.getDate(\"FERIESTART\"); Date ferieslut=rs.getDate(\"FERIESLUT\"); int dagensUge= c.get(Calendar.WEEK_OF_YEAR)+1;
int ugestart= ugekonvertering(feriestart); int ugeslut= ugekonvertering(ferieslut); %> <% if (ugestart>dagensUge){ %> <b>Du har ikke haft din ferie </b> <%} osv. HAr du ellers nogle forslag?
Og det jeg mente med resultSet var at man normalt bruger resultSet.next i forbuíndelse med en while/if løkke for at hente alt det, der er at hente. Men jeg vil hente enkeltvis fra databasen. Jeg har fundet ud af at man kan bruge ResultSet.first() til at hente den første tabel. Så jeg tænkte om man ikke kunne hente dem enkeltvis? Det er lidt svært at forklare, hvorfor jeg vil det når man ikke sidder her foran skærmen!!(hvis bare du sad her!!*S*).
Ja, den har jeg prøvet! Men det virker ikke med at sammenligne feriestart med ugestart. Det var derfor jeg konventerede feriestart til ugetal. Og med int kunne jeg bruge en almindelig \" == \"
Okay, Det kan ske selv for den bedste!! Jo lige til sidst!! Jeg har denne funktion! <%! Date dagensDato = new Date(); SimpleDateFormat formatter = new SimpleDateFormat(\"yyyy-MM-dd\"); String getDate() { return formatter.format(dagensDato); } %> Kunne jeg ikke bruge den til at lave compareTo? Noget i retningen af (virker ikke): if (feriestart.compareTo(getDate()) >=0)
okay, tak!! Ved du noget om databaser? Det er fordi jeg skal lave en select sætning hvor den kun henter ferieslut>=CURRENT_DATE! Men du får lige pointene først!! Så kan du selv bestemme om du vil svare på det eller ej!! Men anyway! Tak for hjeælpen!! 8)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.