[java] tijd optellen

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

  • Duinkonijn
  • Registratie: Augustus 2001
  • Laatst online: 15:48
Hoi ik wil een klok maken die de gewone tijd weer geeft en de tijd + 5 minuten

nu heb ik al via google / got etc het volgende geschreven
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.applet.*;
import java.awt.*;
import java.io.*;
import java.util.*;
import java.text.*;

public class klok 
{ public static void main(String[]args){
String[] ids = TimeZone.getAvailableIDs(+8 * 60 * 60 * 1000);
SimpleTimeZone pdt = new SimpleTimeZone(+1 * 60 * 60 * 1000, ids[0]);
Calendar calendar = new GregorianCalendar(pdt);
Date trialTime = new Date();
calendar.setTime(trialTime);

System.out.println("De huidige tijd: " + calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE));
int min = calendar.get(Calendar.MINUTE);
min=min+5;
System.out.println("De nieuwe tijd : " + calendar.get(Calendar.HOUR_OF_DAY) + ":" + min);
    


}   
}


maar nu heb ik het probleem dat hij niet verder telt als hij over de 59 komt..

ik heb al met getTime en Time geprobeerd te werken maar dit lukt niet.

nou kan ik wel met if functies gaan werken maar dat wordt er niet netter op

[ Voor 7% gewijzigd door Duinkonijn op 19-11-2003 12:24 ]

Het is makkelijk om iemand zijn negatieve eigenschappen te benoemen, maar kan je ook de positieve eigenschappen benoemen?


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
javadoc is je vriend: http://java.sun.com/j2se/...il/Calendar.html#roll(int, int)

[edit] Misschien kun je beter GregorianCalendar gebruiken. De roll en add functies zouden je werk verder voor je moeten doen.

[edit2] Je gebruikt al GregorianCalendar 8)7

[edit3] ja ik blijf bezig. Time gaat niet over tijd. Time is de millisec waarde sinds 1/1/1970 van de datum die door de calendar wordt weergegeven. Sterker nog, Date (deprecated) was eigenlijk alleen die millisec waarde, en is in feite de kern van Calendar.

[ Voor 83% gewijzigd door zneek op 19-11-2003 13:01 ]


  • Donderwolk
  • Registratie: Januari 2002
  • Laatst online: 11-06 11:16
Als je de date hebt aangepast kun je misschien ook gebruikmaken van een date formatter. ( Zie hieronder ) Als het goed is kun je de date aanpassen. Dit zijn volgens mij gewoon een aantal ints/doubles aan elkaar geknoopt. Ik kan me vergissen.

Java:
1
2
3
Date date = new Date();
Format formatter = new SimpleDateFormat( "dd-MM-yyyy HH:mm:ss");
String time = formatter.format( date );


Ik verwijs naar de API voor meer info hierover.

Edit:

Ik heb nu het volgende gemaakt:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.*;
import java.text.*;

public class Tijd{
  public static void main(String[]args){
    Date date = new Date();
    Calendar calendar = new GregorianCalendar();
    calendar.setTime(date);
    calendar.set( Calendar.MINUTE, calendar.get( Calendar.MINUTE ) + 5 );
    Format formatter = new SimpleDateFormat( "HH:mm" );
    String tempTijd1 = formatter.format( date );
    String tempTijd2 = formatter.format( calendar.getTime() );

    System.out.println("De huidige tijd: " + tempTijd1 );
    System.out.println("De nieuwe tijd : " + tempTijd2 );
  }
}


Heb het verder nog niet getest. Maar dit lijkt te werken.
De set methoden van de Date klasse zijn idd deprecated. Daarom moet je het dus maar via een calendar doen, die heeft wel een set methode.

Je voorkomt nu ook dat wanneer je bijv: 57 minuten hebt en daar 5 bij optelt, geen 62 krijgt maar dat de tijd netjes als 1:02 wordt opgeteld.

[ Voor 66% gewijzigd door Donderwolk op 19-11-2003 13:56 ]

Pwnd


  • Duinkonijn
  • Registratie: Augustus 2001
  • Laatst online: 15:48
mijn dank is groot :)

Het is makkelijk om iemand zijn negatieve eigenschappen te benoemen, maar kan je ook de positieve eigenschappen benoemen?


  • yrew
  • Registratie: Augustus 2001
  • Laatst online: 20-08 23:38
code:
1
2
3
GregorianCalendar calOld = new GregorianCalendar();
GregorianCalendar calNew = new GregorianCalendar();
calNew.setTimeInMillis(calOld.getTimeInMillis()+(5*60000));


zo kan het ook. de 5 staat voor de 5 minuten, de 60000 voor het aantal milliseconde dat in een minuut gaat.

edit:

Loop net tegen het volgende aan...Ik heb een string met het volgende formaat:

Fri Nov 14 07:22:28 CET 2003 00:00

Deze moet omgezet worden naar een GregorianCalendar met die exacte datum. Nu is dit best voor elkaar te krijgen met een beetje parsen en de string in stukken te hakken....Maar is hier ook een "handige" manier voor?

[ Voor 38% gewijzigd door yrew op 19-11-2003 16:46 ]

Groetjes


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Donderwolk schreef op 19 november 2003 @ 13:26:
Als je de date hebt aangepast kun je misschien ook gebruikmaken van een date formatter. ( Zie hieronder ) Als het goed is kun je de date aanpassen. Dit zijn volgens mij gewoon een aantal ints/doubles aan elkaar geknoopt. Ik kan me vergissen.

Java:
1
2
3
Date date = new Date();
Format formatter = new SimpleDateFormat( "dd-MM-yyyy HH:mm:ss");
String time = formatter.format( date );


Ik verwijs naar de API voor meer info hierover.

Edit:

Ik heb nu het volgende gemaakt:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.*;
import java.text.*;

public class Tijd{
  public static void main(String[]args){
    Date date = new Date();
    Calendar calendar = new GregorianCalendar();
    calendar.setTime(date);
    calendar.set( Calendar.MINUTE, calendar.get( Calendar.MINUTE ) + 5 );
    Format formatter = new SimpleDateFormat( "HH:mm" );
    String tempTijd1 = formatter.format( date );
    String tempTijd2 = formatter.format( calendar.getTime() );

    System.out.println("De huidige tijd: " + tempTijd1 );
    System.out.println("De nieuwe tijd : " + tempTijd2 );
  }
}


Heb het verder nog niet getest. Maar dit lijkt te werken.
De set methoden van de Date klasse zijn idd deprecated. Daarom moet je het dus maar via een calendar doen, die heeft wel een set methode.

Je voorkomt nu ook dat wanneer je bijv: 57 minuten hebt en daar 5 bij optelt, geen 62 krijgt maar dat de tijd netjes als 1:02 wordt opgeteld.
Ja maar, als de tijd 17:57 is en je telt er op jouw manier 5 minuten bij op, dan wordt de tijd toch 17:02 ?

Met Calendar.add()/roll() wordt er ook doorgeteld als het goed is, en is de uitkomst 18:02, wat het zou moeten zijn.

  • Donderwolk
  • Registratie: Januari 2002
  • Laatst online: 11-06 11:16
nee hoor, als je 17:57 hebt en je telt er 5 minuten bij op mijn manier komt de tijd gewoon op 18:02 te staan. Dus het werkt toch goed. :P

[ Voor 53% gewijzigd door Donderwolk op 19-11-2003 23:06 ]

Pwnd


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Donderwolk schreef op 19 november 2003 @ 23:00:
nee hoor, als je 17:57 hebt en je telt er 5 minuten bij op mijn manier komt de tijd gewoon op 18:02 te staan. Dus het werkt toch goed. :P
Mmmmm, mkay. Maar het is niet volgens de Calendar spec, en daar zou ik me toch aan houden om in de toekomst ook deze functionaliteit gegarandeerd te zien.

Maar aan de andere kant, nooit iets repareren wat niet kapot is ;)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

zneek schreef op 19 november 2003 @ 23:46:
[...]
Maar aan de andere kant, nooit iets repareren wat niet kapot is ;)
Hmmzz... Wat me meteen te binnen schiet is 'Broken Windows'.

In 'Pragmatic Programmer, from journeyman to master' staat hier een stukje over. In een net gebouw is 1 raam gesneuveld. Als je er lange tijd niet aan doet, zullen de mensen in het gebouw er anders over denken. Rommel opruimen, waarom zou je.. Na een tijdje krijg je steeds meer troep en niemand is nog geinteresseerd om het op te ruimen. Het gaat steeds meer verloederen, en meer ramen gaan sneuvelen. Dit gaat door totdat uiteindelijk niemand meer in het gebouw wil wonen (afgezien van een lading buitenlanders) en dan moet je uiteindelijk het gebouw tegen de vlakte gooien.

Dus fix het :) Zet het in ieder geval op een todo lijst.

  • Donderwolk
  • Registratie: Januari 2002
  • Laatst online: 11-06 11:16
Alarmnummer schreef op 20 november 2003 @ 09:03:
[...]


Hmmzz... Wat me meteen te binnen schiet is 'Broken Windows'.

In 'Pragmatic Programmer, from journeyman to master' staat hier een stukje over. In een net gebouw is 1 raam gesneuveld. Als je er lange tijd niet aan doet, zullen de mensen in het gebouw er anders over denken. Rommel opruimen, waarom zou je.. Na een tijdje krijg je steeds meer troep en niemand is nog geinteresseerd om het op te ruimen. Het gaat steeds meer verloederen, en meer ramen gaan sneuvelen. Dit gaat door totdat uiteindelijk niemand meer in het gebouw wil wonen (afgezien van een lading buitenlanders) en dan moet je uiteindelijk het gebouw tegen de vlakte gooien.

Dus fix het :) Zet het in ieder geval op een todo lijst.
* Donderwolk zet het op z'n waslijst ;)

Ik denk wel dat je gelijk hebt, zeker wanneer je grotere programma's hebt.
Beter goed werk dan half werk. Daar heb je later alleen maar profijt van.

Pwnd


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Codeguide en IDEA hebben oa een TODO browser. Dit werk vrij handig. Mbv XDoclet kan je zelfs html raporten genereren. Helaas worden de nieuwe taalfeatures nog niet ondersteund (oa generics). Dus dat is voor mij geen optie.

[ Voor 51% gewijzigd door Alarmnummer op 21-11-2003 14:00 ]

Pagina: 1