Avatar billede phoye Nybegynder
11. oktober 2001 - 10:59 Der 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)?
Avatar billede disky Nybegynder
11. oktober 2001 - 13:00 #1
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.
Avatar billede phoye Nybegynder
11. oktober 2001 - 13:14 #2
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?
Avatar billede disky Nybegynder
11. oktober 2001 - 13:23 #3
Sådanne her:
  DateFormat dFormat = new SimpleDateFormat(\"HH:mm:ss\");     

Den er en del af java

men du skal importe:
java.text.*;
             

Avatar billede phoye Nybegynder
11. oktober 2001 - 13:43 #4
Ja,
og hvordan kommer jeg videre derfra?

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()?
Avatar billede phoye Nybegynder
11. oktober 2001 - 14:33 #5
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?
Avatar billede phoye Nybegynder
11. oktober 2001 - 14:40 #6
Jeg har forsøgt med:
<%Calendar cal = new GregorianCalendar(feriestart);
%>

<%= cal.get(calendar.WEEK_OF_YEAR)%>
Avatar billede disky Nybegynder
11. oktober 2001 - 15:07 #7
Calendar cal = new GregorianCalendar(2001,7,1); //pr,måned,dato (januar =0)
String uge=cal.get(calendar.WEEK_OF_YEAR);

Skulle virke

p.s. kig i API\'en
Avatar billede phoye Nybegynder
11. oktober 2001 - 15:28 #8
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.
Avatar billede phoye Nybegynder
11. oktober 2001 - 15:31 #9
Jeg fik den lige til at virke!!
String uge skulle være en int uge!!
Avatar billede disky Nybegynder
11. oktober 2001 - 15:33 #10
det har du selvfølgelig ret i :)
Avatar billede phoye Nybegynder
11. oktober 2001 - 15:35 #11
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
Avatar billede disky Nybegynder
11. oktober 2001 - 15:42 #12
Går noget ala:


Calendar calendar = new GregorianCalendar(new Locale(\"da\",\"DK\");
calendar.setTime(feriestart);

Så er den sat.


Avatar billede disky Nybegynder
11. oktober 2001 - 15:43 #13
ups der mangler en ) i første linie til sidst
Avatar billede phoye Nybegynder
11. oktober 2001 - 15:43 #14
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);
Avatar billede phoye Nybegynder
11. oktober 2001 - 15:50 #15
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!!
Avatar billede disky Nybegynder
11. oktober 2001 - 15:51 #16
det er helt fint, jeg skal nok lige kigge på det andet også.

Hvordan er de 2 datoer gemt (hvilken type)
Avatar billede disky Nybegynder
11. oktober 2001 - 15:52 #17
p.s. det bliver først om nogle timer jeg for tid.
Avatar billede phoye Nybegynder
11. oktober 2001 - 15:54 #18
Det er okay at det bliver senere!
Den ene har vi allerede fået via databasen, og den anden er idag!
Avatar billede funkoo Nybegynder
11. oktober 2001 - 16:18 #19
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%>
Avatar billede phoye Nybegynder
11. oktober 2001 - 16:47 #20
Ja det ser godt ud. Men jeg skal bruge ugetallet og derefter kan jeg samligne de to uger!!
Men tak for oplysningen!!
Avatar billede funkoo Nybegynder
11. oktober 2001 - 17:15 #21
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!!
Avatar billede funkoo Nybegynder
11. oktober 2001 - 17:28 #22
Hvis det virker!
Skal du bare give alle pointene til Disky. Det var ham, der gjorde det hård arbejde.
Avatar billede phoye Nybegynder
11. oktober 2001 - 18:00 #23
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!!
Avatar billede funkoo Nybegynder
11. oktober 2001 - 18:08 #24
Det ved jeg ikke lige her på stående fod.
Men kig lige på API´en om resultSet.

http://java.sun.com/j2se/1.4/docs/api/index.html

Jeg smutter hjem nu, så jeg kan tidligst besvar eventuelle spørgsmål imorgen!!
Avatar billede disky Nybegynder
12. oktober 2001 - 08:50 #25
phoye: hvad mener du med selv at bestemme hvor resultSet skal ligge ?

Fik du det til at virke med sammenligning af uger ?
Avatar billede phoye Nybegynder
12. oktober 2001 - 11:05 #26
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?
Avatar billede disky Nybegynder
12. oktober 2001 - 11:07 #27
ser umiddelbart godt nok ud.

Ville nok smække det samme sammen.
Avatar billede phoye Nybegynder
12. oktober 2001 - 11:09 #28
hvordan?
Avatar billede disky Nybegynder
12. oktober 2001 - 11:16 #29
hehe

jeg så lige at Data implementerer comparable.

så istedet ville jeg bruge

feriestart.compareTo(ferieslut);

Returns:
a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.


Man kan jo ligeså godt udnytte java\'s funktionalitet :)
Avatar billede phoye Nybegynder
12. oktober 2001 - 11:22 #30
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*).
Avatar billede phoye Nybegynder
12. oktober 2001 - 11:30 #31
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 \" == \"

Avatar billede disky Nybegynder
12. oktober 2001 - 12:18 #32
det har du ret i :)

Den med resultset kan du hvis kun hvis du sætter en limit 1 på din sql query, men så skal du ændre din where del hver gang.
Avatar billede phoye Nybegynder
12. oktober 2001 - 12:37 #33
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)
Avatar billede disky Nybegynder
12. oktober 2001 - 12:40 #34
Jeg er ikke helt sikker, men jeg tror at compareTo() vil have 2 date\'s og formatter returnerer en StringBuffer
Avatar billede phoye Nybegynder
12. oktober 2001 - 12:48 #35
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)
Avatar billede disky Nybegynder
12. oktober 2001 - 12:50 #36
String sql=\"select * from tabel where ferieslut>=\"+CURRENT_DATE;

Den laver en String der hedder SQL hvor dine kriterier er opfyldt.

Kræver dog at CURRENT_DATE er dags dato.

DU kan også bruge databasens dato med:

String sql=\"select * from tabel where ferieslut>=now()\";
Avatar billede phoye Nybegynder
12. oktober 2001 - 13:01 #37
Thankz
Du må have en god weekend!!
phoye
Avatar billede disky Nybegynder
12. oktober 2001 - 13:02 #38
mange tak i lige måde.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester