Avatar billede speder2 Nybegynder
30. april 2002 - 13:29 Der er 15 kommentarer og
2 løsninger

Beregne dage mellem to datoer

Hej

Jeg er TOTALT novice med JSP. Har hidtil programmeret i ASP, men følte det var tid til noget nyt (jeg kører JSP over Tomcat).

Nu skal jeg beregne antal dage mellem to datoer. Det er jo dejligt nemt i ASP, men det er tilsyneladende ikke helt så simpelt i JSP. Hvad skal jeg gøre?

Jeg forestiller mig at det er noget med at downloade en servlet og så bruge den - har i nogle gode råd?

M.v.h.

Søren
Avatar billede Slater Ekspert
30. april 2002 - 13:35 #1
(new Date() - oldDate).getDays();
Avatar billede speder2 Nybegynder
30. april 2002 - 13:40 #2
Det ser let ud - kunne jeg få dig tre at lave 4 linier i JSP, hvor du først definerer new Date, oldDate og sidst udskriver den?

Tusind tak.
Avatar billede disky Nybegynder
30. april 2002 - 13:47 #3
hans metode er et dårligt valg.

.getDays() metoden er forældret (deprecated)

Forresten er der syntax fejl i den :)


Dette her program virker, det udregner hvor gammel jeg bliver imorgen.
/*
* DatoTest.java
*
* Created on 30. april 2002, 13:39
*/

import java.util.*;

/**
*
* @author  Reinke
* @version
*/
public class DatoTest
{
   
    /** Creates new DatoTest */
    public DatoTest()
    {
        GregorianCalendar start=new GregorianCalendar(1972,5,1);
        GregorianCalendar slut=new GregorianCalendar(2002,5,1);
       
        long msek=slut.getTime().getTime()-start.getTime().getTime();
        Date dif=new Date(msek);
       
        System.out.println("Antal dage imellem = "+(dif.getTime()/1000/60/60/24));
        System.out.println("Antal år imellem = "+(dif.getTime()/1000/60/60/24/365));
    }
   
    /**
    * @param args the command line arguments
    */
    public static void main(String args[])
    {
        new DatoTest();
    }
}


I JSP ser det sådanne ud:
        <%
        GregorianCalendar start=new GregorianCalendar(1972,5,1);
        GregorianCalendar slut=new GregorianCalendar(2002,5,1);
       
        long msek=slut.getTime().getTime()-start.getTime().getTime();
        Date dif=new Date(msek);
        %>
        Antal dage imellem = <%=(dif.getTime()/1000/60/60/24))%>
        Antal år imellem = <%=(dif.getTime()/1000/60/60/24/365))%>
Avatar billede disky Nybegynder
30. april 2002 - 13:48 #4
sviperine:
Du kan ikke bruge '-' operatoren direkte på et Date object,
Avatar billede disky Nybegynder
30. april 2002 - 13:49 #5
viperine:
Sorry, skrev dit navn forkert, undskyld
Avatar billede Slater Ekspert
30. april 2002 - 13:49 #6
var oldDate = new Date(year, month, date, hours, minutes, seconds, [milliseconds]);

var new Date();

alert((new Date() - oldDate).getDays());
Avatar billede Slater Ekspert
30. april 2002 - 13:50 #7
sdisky>> (så er vi even) - kan man ikke?? Det kunne man i Internet Explorer 5, og jeg har ikke brug det siden. Sorry hvis jeg har sagt noget bæ.
Avatar billede disky Nybegynder
30. april 2002 - 13:50 #8
viperine:

Øh hvad har du gang i ?

Dette er en JSP gruppe ikke javascript !!


speder2:
Hvis du er helt newbie, ville jeg råde dig til at smide Tomcat LANGT væk, der er kort sagt noget tæt på ubrugeligt software, der kun skaber problemmer.

Download Resin fra www.caucho.com istedet, det er utroligt meget bedre.
Avatar billede Slater Ekspert
30. april 2002 - 13:51 #9
Øhh... disky>> I know, men det er sq da også bare ASP med javascript.
Avatar billede disky Nybegynder
30. april 2002 - 13:53 #10
speder2:

Det mit program gør er at jeg opretter 2 objecter af typen GregorianCalender, jeg bruge denne type object da vi i vores del af verdenen bruge den gregorianske kalender.

Så udregner jeg antal millisekunder imellem dem, og ud fra dette beregner jeg så antal dage og år.

Ups lille detaljer, denne her er bedre da det ikke er nødvendigt at oprette et Date objekt for at hente antal millisekunder igen.

/*
* DatoTest.java
*
* Created on 30. april 2002, 13:39
*/

import java.util.*;

/**
*
* @author  Reinke
* @version
*/
public class DatoTest
{
   
    /** Creates new DatoTest */
    public DatoTest()
    {
        GregorianCalendar start=new GregorianCalendar(1972,5,1);
        GregorianCalendar slut=new GregorianCalendar(2002,5,1);
       
        long dif=slut.getTime().getTime()-start.getTime().getTime();
           
        System.out.println("Antal dage imellem = "+(dif/1000/60/60/24));
        System.out.println("Antal år imellem = "+(dif/1000/60/60/24/365));
    }
   
    /**
    * @param args the command line arguments
    */
    public static void main(String args[])
    {
        new DatoTest();
    }
}



Viperine:
Okay den havde jeg fortjent :)
Avatar billede speder2 Nybegynder
30. april 2002 - 14:50 #11
Disky - tak for hjælpen. Men jeg kan desværre ikke få det til at virke. Det er som om jeg mangler et eller andet for at fungerer. Her er min fejlmeddelelser (det kan jo skyldes, at Tomcat er "ubrugeligt", som du så diplomatisk udtrykker det :-):

org.apache.jasper.JasperException: Unable to compile class for JSPNote: sun.tools.javac.Main has been deprecated.


An error occurred between lines: 8 and 16 in the jsp file: /projektstyring2/test2.jsp

Generated servlet error:
C:\Programmer\Apache Tomcat 4.0\work\localhost\_\projektstyring2\test2$jsp.java:59: Class org.apache.jsp.GregorianCalendar not found.
                        GregorianCalendar start=new GregorianCalendar(1972,5,1);
Avatar billede soelvpil Nybegynder
30. april 2002 - 14:58 #12
Prøv at smide følgende linje ind i toppen af din jsp-side

<%@ page import="java.util.*" %>
Avatar billede disky Nybegynder
30. april 2002 - 15:07 #13
nej det har nu ikke lige noget med tomcat at gøre.

problemmet er at du forsøger at køre min java application som en jsp side.

Lav følgende jsp side: Det skulle virke (kan dog ikke lige teste det selv)



<%@ page import="java.util.*" %>
<%
        GregorianCalendar start=new GregorianCalendar(1972,5,1);
        GregorianCalendar slut=new GregorianCalendar(2002,5,1);
       
        long msek=slut.getTime().getTime()-start.getTime().getTime();
        Date dif=new Date(msek);
        %>
        Antal dage imellem = <%=(dif.getTime()/1000/60/60/24))%>
        Antal år imellem = <%=(dif.getTime()/1000/60/60/24/365))%>
Avatar billede disky Nybegynder
30. april 2002 - 15:08 #14
speder2:

Hvad angår tomcat er jeg absolut ikke diplomatisk :)

Jeg har arbejdet for meget med det program til at jeg synes det mindste om det, magen til makværk skal man desværre lede længe efter :(

Jeg håber i det mindste du bruger version 4 eller nyere, for version 3 og derunder var extremt slemme.
Avatar billede speder2 Nybegynder
30. april 2002 - 15:08 #15
Så virker det sgu - Tak begge to :-)
Avatar billede disky Nybegynder
30. april 2002 - 15:13 #16
Det var skam så lidt.

Du spørger bare hvis det driller en anden gang :)
Avatar billede speder2 Nybegynder
30. april 2002 - 15:26 #17
Det kan du bande på :-) Jeg er helt tom overfor alt hvad der ikke hedder Microsoft, og der er mange ting i denne her verden, som man selv skal konfigurere. Jeg er klar over, at det giver bedre fleksibilitet, men det er bare svært at komme igang.
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