Toon posts:

[JAVA] Problemen met datum voor 1970

Pagina: 1
Acties:
  • 180 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Beste tweakers,

Ik heb een aparte datum classe gemaakt, met wat bewerkingen etc mtt de datum:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
[java]
import java.awt.*;
import java.util.*;
import java.io.*;
import java.lang.*;

public class Kalender implements Serializable{
  String beginDatum, eindDatum, beginTijd, eindTijd;
  String[] ids = TimeZone.getAvailableIDs(+1 * 60 * 60 * 1000);
  SimpleTimeZone pdt = new SimpleTimeZone(+1 * 60 * 60 * 1000, ids[0]);
  Calendar calendar = new GregorianCalendar(pdt);
  Calendar objBeginDatum = new GregorianCalendar();
  Calendar objEindDatum = new GregorianCalendar();

  public Kalender() {
  }

  public Kalender(Date dateDatum) {
  // Deze constructor maakt een object aan van Kalender met het meegegeven date object.
  // Als het een afspraak betreft, kan er een tijd aan meegegeven worden.
  // In het geval van bijv een geboortedatum, zet je gewoon de tijd standaard op 0 ...
  this.calendar.set(dateDatum.getYear(),dateDatum.getMonth(),dateDatum.getDate(),dateDatum.getHours(),dateDatum.getMinutes());
  }

  public String geefDatum() {
    int dag,maand,jaar;
    dag = calendar.get(Calendar.DAY_OF_MONTH);
    maand = calendar.get(Calendar.MONTH) + 1;
    jaar = calendar.get(Calendar.YEAR);
    if (dag < 10 && maand < 10) {
    return "0"+dag+"-0"+maand+"-"+jaar;
    }
    if (dag < 10) {
    return "0" + dag+"-"+maand+"-"+jaar;
    }
    if (maand < 10) {
    return dag+"-0"+maand+"-"+jaar;
    }
    else {
    return dag+"-"+maand+"-"+jaar;
    }
  }

  public String geefTijd() {
    int uur,minuut;
    uur = calendar.get(Calendar.HOUR);
    minuut = calendar.get(Calendar.MINUTE);
    if (uur < 10 && minuut < 10) {
    return "0"+uur+":0"+minuut;
    }
    if (uur < 10) {
    return "0" +uur+":"+minuut;
    }
    if (minuut < 10) {
    return uur+":0"+minuut;
    }
    else {
    return uur+":"+minuut;
    }
  }

  public int geefMaand() {
    return (calendar.get(Calendar.MONTH) + 1);
  }

  public int geefDag() {
    return(calendar.get(Calendar.DAY_OF_MONTH));
  }

  public int geefJaar() {
    return(calendar.get(Calendar.YEAR));
  }

  public boolean checkDatum(int dag, int maand, int jaar) {
      System.out.println("Datumcheck op" +dag +"-" +maand +"-" +jaar);


      Date datum = new Date(jaar, maand, dag);

      if (datum.getDate() != dag || datum.getMonth() != maand || datum.getYear() != jaar) {
      // Geboortedatum is fout
        System.out.println("datum is foutief");
        return false;
      }
      else {
        System.out.println("datum is correct");
          return true;
      }
  }


}

[/java]


Nu wil ik een nieuwe instantie van Kalender maken:
code:
1
2
3
4
[java]
Date datum = new Date(year, month, day);
Kalender kal = new Kalender(datum);
[/java]


Dit gaat allemaal goed, maar als ik een datum invul voor 1970 dan gaat het fout.
year = 1950
month = 1
day = 1

levert op (als ik het opsla als Kalender en daarna weer terug opvraag): 19-12-1949

Wat is er fout?

Verwijderd

Wilde gok hoor, want ik ben geen Java-programmeur, maar 1970 is het officiele geboortejaar van UNIX en timestamps worden meestal vanaf 1-1-1970 geteld.

  • momania
  • Registratie: Mei 2000
  • Laatst online: 22:41

momania

iPhone 30! Bam!

Verwijderd schreef op 21 oktober 2002 @ 12:36:
Wilde gok hoor, want ik ben geen Java-programmeur, maar 1970 is het officiele geboortejaar van UNIX en timestamps worden meestal vanaf 1-1-1970 geteld.
Dat van UNIX weet ik niet, maar ik weet wel dat al je de systeemdatum
opvraagt in JAVA dat je het aantal millisec. vanaf 1970 krijgt.
Daar vanuit gaande lijkt mij dat de Calendar enz. daar ook mee rekenen
en het dus meis gaat bij eerdere datums.

Neem je whisky mee, is het te weinig... *zucht*


  • Uiligheid
  • Registratie: December 2000
  • Laatst online: 20-08 15:21

Uiligheid

alle gekheid op een stokje

code:
1
2
3
4
5
6
public Kalender(Date dateDatum) {
  // Deze constructor maakt een object aan van Kalender met het meegegeven date object.
  // Als het een afspraak betreft, kan er een tijd aan meegegeven worden.
  // In het geval van bijv een geboortedatum, zet je gewoon de tijd standaard op 0 ...
  this.calendar.set(dateDatum.getYear(),dateDatum.getMonth(),dateDatum.getDate(),dateDatum.getHours(),dateDatum.getMinutes());
  }


Moet hier geen overloaded method voor komen? Als je eens probeert alleen het jaar, maand en dag mee te geven ( en dat hij ook alleen die set..) misschien werkt dat?

Ceterum censeo Carthaginem esse delendam


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Ik zie eigenlijk niet in waarom je deze class aan het maken bent. Al de methodes die u aan het schrijven bent, bestaan allang binnen GregorianCalendar of DateFormat classes.
Als je toch perse dit wilt schrijven, spiek dan ff in de source van deze classes ( naar ik weet gewoon te vinden in de src.jar in uw jdk directory)

Verwijderd

Topicstarter
Uiligheid schreef op 21 oktober 2002 @ 13:36:
code:
1
2
3
4
5
6
public Kalender(Date dateDatum) {
  // Deze constructor maakt een object aan van Kalender met het meegegeven date object.
  // Als het een afspraak betreft, kan er een tijd aan meegegeven worden.
  // In het geval van bijv een geboortedatum, zet je gewoon de tijd standaard op 0 ...
  this.calendar.set(dateDatum.getYear(),dateDatum.getMonth(),dateDatum.getDate(),dateDatum.getHours(),dateDatum.getMinutes());
  }


Moet hier geen overloaded method voor komen? Als je eens probeert alleen het jaar, maand en dag mee te geven ( en dat hij ook alleen die set..) misschien werkt dat?
nee, geef precies hetzelfde resultaat.

Verwijderd

Topicstarter
Glimi schreef op 21 oktober 2002 @ 14:51:
Ik zie eigenlijk niet in waarom je deze class aan het maken bent. Al de methodes die u aan het schrijven bent, bestaan allang binnen GregorianCalendar of DateFormat classes.
Als je toch perse dit wilt schrijven, spiek dan ff in de source van deze classes ( naar ik weet gewoon te vinden in de src.jar in uw jdk directory)
Ik vind het ook een beetje dom, maarja de rest van de projectleden vinden dat tie erin moet....

Verwijderd

quote:
--------------------------------------------------------------------------------
Glimi schreef op 21 oktober 2002 @ 14:51:
Ik zie eigenlijk niet in waarom je deze class aan het maken bent. Al de methodes die u aan het schrijven bent, bestaan allang binnen GregorianCalendar of DateFormat classes.
Als je toch perse dit wilt schrijven, spiek dan ff in de source van deze classes ( naar ik weet gewoon te vinden in de src.jar in uw jdk directory)

--------------------------------------------------------------------------------


Ik vind het ook een beetje dom, maarja de rest van de projectleden vinden dat tie erin moet....
Beter goed gejat dan slecht bedacht! ;)
[ontopic]
Moet je er geen rekening mee houden voor 1970 gaat rekenen met negatieve getallen ?
M.a.w. Moet je er dan niet overal 1 ofzo bij optellen (gezien de output dan he) en op het eerste gezicht ....

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 17-08 22:44
Verwijderd schreef op 21 oktober 2002 @ 15:08:
[...]


Ik vind het ook een beetje dom, maarja de rest van de projectleden vinden dat tie erin moet....
Ah, de lust van een school project groepje wat niet verder wil kijken dan hun neus lang is. Als ik jou was, dan zou ik mijn tijd steken in een GregorianCalendar. Doe je pcies hetzelfde mee, maar dan wel zonder al dat extra werk...

Dat die lui het niet door hebben moet je je niet door laten kisten. Als ze zien dat het werkt vinden ze het vast goed. Ik hou zelf overigens niet van taakjes verdelen in de trand van jij doet die klasse en jij doet die klasse. Dan liever funtionaliteit verdelen en dat regelmatig met elkaar integreren. SCheelt een beden gezeik, tenzij iemand zijn werk niet af heeft :D

  • TheOneLLama
  • Registratie: Oktober 2000
  • Laatst online: 20-01-2022

TheOneLLama

A llama like no llama before

Verwijderd schreef op 21 oktober 2002 @ 15:08:
[...]
Ik vind het ook een beetje dom, maarja de rest van de projectleden vinden dat tie erin moet....
Ik zou zeggen, leg nog eens voor (Gregorian)Calendar te gebruiken bij je projectgriep ipv Date. Echt, ik meen het. De constructor die jij gebruikt is niet voor niets deprecated sinds 1.1! Dit probleem los je in ieder geval niet op zo lang je Date blijft gebruiken.

Opera OpenOffice.org Jabber Psi jabber://llama@mordax.com

Pagina: 1