2016-08-07 9 views
-1
public class Output extends javax.swing.JFrame { 

    public Output() { 
     initComponents(); 
     setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("abc.jpg"))); 
     setSize(400, 700); 
     setLocationRelativeTo(null); 
     setResizable(false); 
     setdate(); 
    } 
    public void setdate(){ 
     ActionListener obj = new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       java.util.Date date = new Date(); 

       Date.setText(date.getDate()+"-"+(1+date.getMonth())+ 
         "-"+date.getYear()+"/"+date.getHours() + ":" 
         + date.getMinutes()+ ":" + 
         date.getSeconds()); 
      } 
     }; 
     new javax.swing.Timer(1000,obj).start();  
} 

zeigt Immer, wenn ich diesen Code ausführen ich alles OK bekommen, aber während Jahr einstellen es zeigt 18-8-116, während es 18-8-16 oder 18-8-2016 zeigen sollte.Jahr in GUI nicht richtig Jahr

+0

Sie sind eine lästige alte Klasse jetzt mit verdrängte durch [ 'java.time.LocalDate'] (http://docs.oracle.com /javase/8/docs/api/java/time/LocalDate.html). Stattdessen rufen Sie [LocalDate.of (int Jahr, Monat, Tag, TagMonat)]] (http://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#of-int- int-int-). Kein funky Zählen auf dieser Klasse; Das Jahr 2016 ist "2016", wie es sein sollte. –

Antwort

1

Datum speichert das Jahr eines Datums als Jahre von 1900, daher der 116 (1900 + 116 = 2016).

Die meisten Methoden von Date sind seit Java 1.1 veraltet. Bis Java 1.8 hast du besser den Kalender oder LocalDate von Joda-Time benutzt. Seit Java 1.8 wurde Date durch LocalDate, LocalTime, LocalDateTime und ihre Zeitzonen-Gegenstücke, d. H. Durch ZonedDateTime ersetzt.

So könnten Sie hier eine LOCALDATE verwenden, dh

LocalDate date = LocalDate.of(2016, Month.AUGUST, 18); 
+1

Nur bestimmte "Methoden in [' Date'] (https://docs.oracle.com/javase/8/docs/api/java/util/Date.html) sind veraltet. " – trashgod

+1

oops, ja, es ist wahr. Die Klasse Date ist nicht veraltet, sondern die Mehrzahl ihrer Methoden. Das habe ich korrigiert. – deepblue

+0

Obwohl nicht vollständig veraltet, wird die Klasse Date durch die Klassen [java.time] (http://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html) wie erwähnt ersetzt in der Klassendokumentation. –