Countdown (Stunden bis Freitag)

Ok das habe ich jetzt! Funktioniert auch alles sehr gut soweit

Jetzt muss ich nur noch ne Wochenende Funktion einbauen ^^ aber da muss ich mir erstmal ne abrruch bedingung für meine do-while schleife überlegen!
 
Zuletzt bearbeitet:
Code:
package countd;
import java.awt.*;
import java.text.*;
import javax.swing.*;
import org.joda.time.DateTime;
import org.joda.time.Period;

import java.awt.event.*;

public class Count {
	  static JFrame fCount = new JFrame("Countdown");
	  static JLabel lCount = new JLabel();
	public static void main(String[] args) {
		  lCount.setBounds(0, 0, 400, 80);
		  fCount.getContentPane().add(lCount);
			Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
			fCount.setLocation( (d.width - fCount.getSize().width ) / 2, 
			               (d.height- fCount.getSize().height) / 2 );
		  fCount.setDefaultCloseOperation(fCount.EXIT_ON_CLOSE);
		  	fCount.addKeyListener(new KeyListener()
			{
				public void keyPressed(KeyEvent event) {}
				public void keyReleased(KeyEvent event) {
					if (event.getKeyChar() == KeyEvent.VK_ESCAPE)
					{
						System.exit(0);
					}
				}
				public void keyTyped(KeyEvent event) {}
			}
			);
		  	fCount.setUndecorated(true);
        lCount.setFont(new Font("Comic Sans MS",Font.BOLD,72));
  		lCount.setHorizontalAlignment(SwingConstants.CENTER);
  		lCount.setBackground(Color.RED);
  		lCount.setForeground(Color.WHITE);
  		lCount.setOpaque(true);
  		while(true)
  		{
		countdown();
		weekend();
  		}
    }
	
	public static void countdown()
	{
		  	String output;
		  	DecimalFormat df = new DecimalFormat("00");
	      	Period extern_period;
	        do
	        {
	        DateTime today = new DateTime();
	        DateTime nextFriday1930 = today.weekOfWeekyear().toInterval().getEnd()
	                .minusDays(3).withHourOfDay(19).withMinuteOfHour(30);
	 
	        Period period = new Period(today, nextFriday1930);
	        extern_period = period;
	        output = "Zeit: "+df.format(period.getHours())+":"+df.format(period.getMinutes())+":"+df.format(period.getSeconds())+"\n";
	        lCount.setText(output);
	        fCount.pack();
	        fCount.show();
			Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
	  		fCount.setLocation( (d.width - fCount.getSize().width ) / 2, 
	  	               (d.height- fCount.getSize().height) / 2 );
	        try
	        {
	        	Thread.sleep(1000);
	        }
	        catch (InterruptedException e)
	        {
	        	e.printStackTrace();
	        }
	        }while(extern_period.getHours() >= 0 & extern_period.getMinutes() >= 0 & extern_period.getSeconds() >= 0);
	}
	
	public static void weekend()
	{
	  	String output;
		Period extern_period;
		do
		{
	        DateTime today = new DateTime();
	        DateTime nextFriday1930 = today.weekOfWeekyear().toInterval().getEnd();
	 
	        Period period = new Period(today, nextFriday1930);
	        extern_period = period;
	        output = "Wochenende";
	        lCount.setText(output);
			Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
	  		fCount.setLocation( (d.width - fCount.getSize().width ) / 2, 
	  	               (d.height- fCount.getSize().height) / 2 );
	        try
	        {
	        	Thread.sleep(10000);
	        }
	        catch (InterruptedException e)
	        {
	        	e.printStackTrace();
	        }
		} while(extern_period.getHours() >= 0 & extern_period.getMinutes() >= 0 & extern_period.getSeconds() >= 0);
	}
}

So das ist mein Code, den kann man bestimmt noch um einiges verbessern! ^^ Aber ich denke er erfüllt seinen Zweck oder? Zumindestens haben meine kleinen Tests das ergeben ^^
Will jetzt nur noch einbauen, dass er am Sonntag 16.30 wieder anfängt bis zum nächsten Freitag zu zählen, aber da brauche ich ja ne übergangsfunktion, weil ich ja erst am Montag wieder zu meiner normalen Funktion changen kann! ^^
 
Mhhh, muss ich dann die Tage noch mitangeben? Oder kann ich das auch direkt in den Stunden ausgeben?

Edit: Habe deinen Code mal kopiert und bei mir eingefügt, allerdings funktioniert er bei mir nicht, er gibt trotzdem nur die Stunden bis morgen aus!

Code:
DateTime today = new DateTime();
	        DateTime nextbridge = today.weekOfWeekyear().toInterval().getEnd();
	        DateTime nextFriday1930Candidate = today.weekOfWeekyear().toInterval()
	                        .getEnd().minusDays(3).withHourOfDay(19).withMinuteOfHour(30);
	                DateTime nextFriday1930 = null;
	                if (nextFriday1930Candidate.isAfter(today)) {
	                    nextFriday1930 = nextFriday1930Candidate;
	                } else {
	                    nextFriday1930 = nextFriday1930Candidate.plusWeeks(1);
	                }
	        Period period = new Period(today, nextFriday1930);
	        Period bridge = new Period(today, nextbridge);
	        extern_period = bridge;
	        if (period.getHours() >= 100)
	        	output = "Bridge: "+trio.format(period.getHours())+":"+duo.format(period.getMinutes())+":"+duo.format(period.getSeconds())+"\n";
	        else
	        	output = "Bridge: "+duo.format(period.getHours())+":"+duo.format(period.getMinutes())+":"+duo.format(period.getSeconds())+"\n";
	        lCount.setText(output);

So habe ich das in meinen Code eingebaut! ^^
 
Zuletzt bearbeitet:
Er rechnet es einfach nicht bis zur nächsten Woche, hat irgendwer eine Lösung?

Edit:
Vergesst es, habe einfach nur nen Fehler in der Umrechnung gehabt ich Idiot ^^

Edit2:
Jetzt muss ich das ganze nur noch so verpacken, dass ich den Wochentag und die Uhrzeit einstellen kann, aber da habe ich mal wieder keine Idee
 
Zuletzt bearbeitet:
Zurück