Clock, reset hour and new day statement

Hi, i made a very basic clock and i have two questions.

1: I wonder how can i reset the hours. Like when it past 24 it restart to 0.
2: How can i make a statement when a new day start. Can i use a boolean ?

void setup(){
  size(200,40);
}

int time = 0;
int seconds;
int minutes;
int hour;
int day;

void draw(){
  background(0);
  clockTick();
  text("minutes " + minutes,10,10);
  text("hour " + hour,10,20);
  text("day " + day,10,30);
}

void clockTick(){
  time = millis();
  seconds = (int) (time/1000)*7200;
  minutes = seconds/60;
  hour = minutes/60;
  day = hour/24;
}

Thanks for your help.

1 Like

-a- you not need to calculate:

void setup(){
  size(200,40);
  textSize(15);
}
void draw() {
  background(0,0,80);
  text(year()+"/"+month()+"/"+day()+" "+hour()+":"+minute()+":"+second(),10,25);
}

-b- millis() not give the clock time ,
it give the milli seconds since sketch start.

Hi, That’s not what i mean,

I know it’s what i want, an “in game” clock

int time = 0;
int seconds;
int minutes;
int hour;
int day;

void draw_time(){
  background(0);
  clockTick();
  text(" s " + seconds+" m " + minutes+" h " + hour+" d  " + day,10,30);
}

void clockTick(){
  time = millis();
  seconds = (int) (time/1000);//????*7200;
  minutes = seconds/60;
  hour = minutes/60;
  day = hour/24;
  // repair
  hour -= day*24;
  minutes -= day*24*60 +hour*60;
  seconds -= day*24*60*60 +hour*60*60 + minutes*60;
}

but that is the primitive way… pls find modulo % !!
also check if ‘time’ can be INT or should be LONG

Thanks i will check modulo.
How can i make a statement when a new day start ?
Like when day increment by one, i have a text say “a new day start”

i found a way, i pretty sure its not the best but it work.

  if(hour <= 1){
    text("new day",10,40);
  }

Modulo wraps around to zero. https://processing.org/reference/modulo.html

So if you are counting:

x 0 1 2 3 4 5 6 7 8 9 10
x%8 0 1 2 3 4 5 6 7 0 1 2
x%5 0 1 2 3 4 0 1 2 3 4 0
x%3 0 1 2 0 1 2 0 1 2 0 1
x%2 0 1 0 1 0 1 0 1 0 1 0

In your case, if you want to count from 0-23 over and over, then:

h = (h+1)%24

1 Like