Timestamp zu Datum und umgekehrt

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,

ich würde gerne zu Übungszwecken ein Programm schreiben, welches Timestamps zu Daten und andersrum berechnet.

Der User hat einen Frame mit 6 Textfeldern (Timestamp, Tag, Monat, Jahr, Stunde, Minute). Wenn er irgentwo was eingibt soll der Rest berechnet werden.

Das ganze habe ich schon für den Timestamp hinbekommen. Das Programm spuckt also nun alles andere aus wenn man den Timestamp eingibt (bzw wenn man nichts eingibt den aktuellen Stamp).

Bei dem Rest haperts noch. Ich habe mir die API's und Bücher durchgelesen, finde jedoch nichts wo ich von String zu Date umwandeln kann. Wie mache ich das?

Code:
package timestamp;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Main extends JFrame implements ActionListener {

    private Date date = new Date();
    private SimpleDateFormat format;
    
    private JTextField timestampField, dayField, monthField, yearField, hourField, minuteField;

    /**
     * Method thats updates all components to date.
     */
    private void updateComponents() {
        
        timestampField.setText("" + ( date.getTime() / 1000l ));
        
        format = new SimpleDateFormat("dd");
        dayField.setText(format.format(date));
        
        format = new SimpleDateFormat("MM");
        monthField.setText(format.format(date));
        
        format = new SimpleDateFormat("yyyy");
        yearField.setText(format.format(date));
        
        format = new SimpleDateFormat("kk");
        hourField.setText(format.format(date));
        
        format = new SimpleDateFormat("mm");
        minuteField.setText(format.format(date));
        
    }
    
    /**
     * ActionListener for timestampField
     */
    public void actionPerformed(ActionEvent e) {
    
        if( e.getSource() == timestampField ) {

            timestampField.setText(timestampField.getText().trim());
        
            if( timestampField.getText().equals("") ) timestampField.setText("" + (date.getTime() / 1000l) );
        
            try {
                date.setTime( Long.parseLong(timestampField.getText()) * 1000l );
                updateComponents();             
            }
            catch(Exception ex) {
                JOptionPane.showMessageDialog(
                        this,
                        "enterValidValueFor",
                        "error",
                        JOptionPane.ERROR_MESSAGE);
            }
            
        }
        
    }     
    
    /**
     * Frame.
     */
    public Main() {
        super("Fenstertitel");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        JPanel pane = new JPanel();  
        timestampField.addActionListener(this); 
        dayField.addActionListener(this); 
        monthField.addActionListener(this); 
        yearField.addActionListener(this); 
        hourField.addActionListener(this); 
        minuteField.addActionListener(this); 
        pane.add(timestampField);
        pane.add(dayField);
        pane.add(monthField);
        pane.add(yearField);
        pane.add(hourField);
        pane.add(minuteField);
        add(pane);
    }

    public static void main(String[] args) {
        Main ausgabe = new Main();
        ausgabe.setVisible(true);
    }
    
}
 
G

Guest

Gast
Sorry, ich hatte noch das pack() und vordefinieren vergessen:

Code:
package timestamp;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Main extends JFrame implements ActionListener {

    private Date date = new Date();
    private SimpleDateFormat format;
    
    private JTextField timestampField = new JTextField(5),
                       dayField       = new JTextField(5),
                       monthField     = new JTextField(5),
                       yearField      = new JTextField(5),
                       hourField      = new JTextField(5),
                       minuteField    = new JTextField(5);

    /**
     * Method thats updates all components to date.
     */
    private void updateComponents() {
        
        timestampField.setText("" + ( date.getTime() / 1000l ));
        
        format = new SimpleDateFormat("dd");
        dayField.setText(format.format(date));
        
        format = new SimpleDateFormat("MM");
        monthField.setText(format.format(date));
        
        format = new SimpleDateFormat("yyyy");
        yearField.setText(format.format(date));
        
        format = new SimpleDateFormat("kk");
        hourField.setText(format.format(date));
        
        format = new SimpleDateFormat("mm");
        minuteField.setText(format.format(date));
        
    }
    
    /**
     * ActionListener for timestampField
     */
    public void actionPerformed(ActionEvent e) {
    
        if( e.getSource() == timestampField ) {

            timestampField.setText(timestampField.getText().trim());
        
            if( timestampField.getText().equals("") ) timestampField.setText("" + (date.getTime() / 1000l) );
        
            try {
                date.setTime( Long.parseLong(timestampField.getText()) * 1000l );
                updateComponents();             
            }
            catch(Exception ex) {
                JOptionPane.showMessageDialog(
                        this,
                        "enterValidValueFor",
                        "error",
                        JOptionPane.ERROR_MESSAGE);
            }
            
        }
        
    }     
    
    /**
     * Frame.
     */
    public Main() {
        super("Fenstertitel");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel pane = new JPanel();  
        timestampField.addActionListener(this); 
        dayField.addActionListener(this); 
        monthField.addActionListener(this); 
        yearField.addActionListener(this); 
        hourField.addActionListener(this); 
        minuteField.addActionListener(this); 
        pane.add(timestampField);
        pane.add(dayField);
        pane.add(monthField);
        pane.add(yearField);
        pane.add(hourField);
        pane.add(minuteField);
        add(pane);
        pack();
    }

    public static void main(String[] args) {
        Main ausgabe = new Main();
        ausgabe.setVisible(true);
    }
    
}
 
S

SlaterB

Gast
recht ähnlich
Date date = format .parse(string);

wenn alle Felder befüllt sind, dann ist es gut machbar,
füge die Teilstrings zusammen und benutze ein passendes Format

wenn du nur 10 Minuten hast, was dann?
 
G

Guest

Gast
Naja wenn der User nur ein Kästchen eingibt dann wird der Rest durch das aktuelle Datum ersetzt, aber du hast recht, was wenn der User einen Zeitpunkt vor der Unix-Zeit angibt? ???:L

Date date = format .parse(string);

wenn alle Felder befüllt sind, dann ist es gut machbar,
füge die Teilstrings zusammen und benutze ein passendes Format

also mache ich einfach tagFeld.getText() + "." + monatFeld.getText()... ? Muss ich vorher noch mit nullen auffüllen? Also wenn ich beim format dd hab aber der User beim Tag nur 2 angegeben hat.

Danke für deine Hilfe
 
S

SlaterB

Gast
das wirst du herausfinden, nachdem du das Wort 'Ausprobieren' nachgeschlagen hast ;)
'API/ Lehrbuch lesen' gibts auch noch, aber bei so einem schweren Thema auch nur schwer zu finden

leichter ist in dem 'aktuelles Datum'-Fall vielleicht, die nichtleeren Felder in Zahlen zu parsen und Calendar zu verwenden

aktueller Calendar,
calendar.set(YEAR, year);
usw.
(siehe API/ Lehrbuch/ google/ Forumsuche für tatsächliche Bedienung)
 
G

Guest

Gast
Okay danke, ich habs. Wen die Lösung interressiert hier die Source der Methoden (timestamp = SimTimeT):

Code:
    private Date date = new Date();
    private SimpleDateFormat format;
        
    /**
     * Method thats updates all components to date.
     */
    private void updateComponents() {
        
        simTimeTField.setText("" + ( date.getTime() / 1000l ));
        
        format = new SimpleDateFormat("dd");
        dayField.setText(format.format(date));
        
        format = new SimpleDateFormat("MM");
        monthField.setText(format.format(date));
        
        format = new SimpleDateFormat("yyyy");
        yearField.setText(format.format(date));
        
        format = new SimpleDateFormat("kk");
        hourField.setText(format.format(date));
        
        format = new SimpleDateFormat("mm");
        minuteField.setText(format.format(date));
        
    }

    private void resetButtonActionPerformed(java.awt.event.ActionEvent evt) {                                            

        date = new Date();
        updateComponents();         
        
    }                                           

    private void FieldActionPerformed(java.awt.event.ActionEvent evt) {                                      

        dayField.setText   (dayField.getText().trim()   );
        monthField.setText (monthField.getText().trim() );
        yearField.setText  (yearField.getText().trim()  );
        hourField.setText  (hourField.getText().trim()  );
        minuteField.setText(minuteField.getText().trim());
        
        if( dayField.getText().equals("") ) {
            format = new SimpleDateFormat("dd");
            dayField.setText("" + format.format(date) );
        }
        
        if( monthField.getText().equals("") ) {
            format = new SimpleDateFormat("MM");
            monthField.setText("" + format.format(date) );
        }
        
        if( yearField.getText().equals("") ) {
            format = new SimpleDateFormat("yyyy");
            yearField.setText("" + format.format(date) );
        }
        
        if( hourField.getText().equals("") ) {
            format = new SimpleDateFormat("kk");
            hourField.setText("" + format.format(date) );
        }
        
        if( minuteField.getText().equals("") ) {
            format = new SimpleDateFormat("mm");
            minuteField.setText("" + format.format(date) );
        }
        
        try {
            
            int iday, imonth, iyear, ihour, iminute;
            
            iday    = Integer.parseInt(dayField.getText()   );
            imonth  = Integer.parseInt(monthField.getText() );
            iyear   = Integer.parseInt(yearField.getText()  );
            ihour   = Integer.parseInt(hourField.getText()  );
            iminute = Integer.parseInt(minuteField.getText());
            
            format = new SimpleDateFormat("dd.MM.yyy kk:mm");
            date = format.parse(iday + "." + imonth + "." + iyear + " " + ihour + ":" + iminute);
            
            updateComponents();             
        }
        catch(Exception e) {
            JOptionPane.showMessageDialog(
                    this,
                    Main.langGet("enterValidValueFor") + " " + Main.langGet("date"),
                    Main.langGet("error"),
                    JOptionPane.ERROR_MESSAGE);
        }
        
    }                                     

    private void simTimeTFieldActionPerformed(java.awt.event.ActionEvent evt) {                                              

        simTimeTField.setText(simTimeTField.getText().trim());
        
        if( simTimeTField.getText().equals("") ) simTimeTField.setText("" + (date.getTime() / 1000l) );
        
        try {
            date.setTime( Long.parseLong(simTimeTField.getText()) * 1000l );
            updateComponents();             
        }
        catch(Exception e) {
            JOptionPane.showMessageDialog(
                    this,
                    Main.langGet("enterValidValueFor") + " SimTimeT",
                    Main.langGet("error"),
                    JOptionPane.ERROR_MESSAGE);
        }
        
    }
 
S

SlaterB

Gast
wieso parst du den Inhalt der Textfelder in Zahlen,
z.B.
iday = Integer.parseInt(dayField.getText() );

und fügst die Zahlen dann wieder zu einem String zusammen?
verwende doch direkt die Strings aus den Textfeldern!


---------


allgemeiner Tipp:
auf alle Ewigkeit ständig neue SimpleDateFormat-Objekte zu erzeugen
könnte man als unnötig ansehen,
definiere dir 6 statische Variablen, dann hast du sie
 
G

Guest

Gast
Hey,

danke für den zweiten Tipp.. Wird gemacht :D

Zum ersten Hinweis:

damit ich verhindern kann das der User zb Buchstaben eingibt
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Methoden Aus Timestamp das Datum berechnen Java Basics - Anfänger-Themen 3
B Wie aus einem Datum String eine Timestamp erzeugen Java Basics - Anfänger-Themen 6
D Timestamp -> Datum Java Basics - Anfänger-Themen 6
M log4j Unterverzeichnis mit Datum , Timestamp in LogDateiname Java Basics - Anfänger-Themen 2
A Timestamp nach Datum - Datum nach Timestamo Problem ! Java Basics - Anfänger-Themen 2
P Timestamp zu Datum machen Java Basics - Anfänger-Themen 4
W Datum to TimeStamp in Millis Java Basics - Anfänger-Themen 7
S Datum in Unix-Timestamp umwandeln Java Basics - Anfänger-Themen 5
G Update auf Datenbankspalte vom Typ Timestamp mit aktu. Datum Java Basics - Anfänger-Themen 3
W Timestamp lesen Java Basics - Anfänger-Themen 6
P "Datestamp" to Date oder Timestamp Java Basics - Anfänger-Themen 15
Errorfield Erste Schritte Timestamp DB Java Basics - Anfänger-Themen 18
F Timestamp auf volle Einheit abrunden Java Basics - Anfänger-Themen 9
J TimeStamp Java Basics - Anfänger-Themen 5
Y Datei auf Dektop mit timestamp Speichern Java Basics - Anfänger-Themen 5
E Timestamp umwandeln in Datumsangabe Java Basics - Anfänger-Themen 2
Assassin Timestamp erzeugen.. Java Basics - Anfänger-Themen 7
G String in Timestamp? Java Basics - Anfänger-Themen 2
J MySQL Timestamp "lesbarer" gestalten Java Basics - Anfänger-Themen 6
G Unterschied zwischen SQL Timestamp und Java Java Basics - Anfänger-Themen 2
G Timestamp in Minuten umrechnen Java Basics - Anfänger-Themen 8
J aktuellen Timestamp ziehen Java Basics - Anfänger-Themen 3
G Timestamp - Timestamp Java Basics - Anfänger-Themen 8
G Timestamp zu Stunde:Minute Java Basics - Anfänger-Themen 2
M Doppelte Einträge in einer datei löschen(nach timestamp)! Java Basics - Anfänger-Themen 4
J gregorian calender zu java.sql.timestamp problem Java Basics - Anfänger-Themen 3
S Timestamp in Url Java Basics - Anfänger-Themen 13
M Zeitzonen unabhängigen Timestamp in DB speichern Java Basics - Anfänger-Themen 7
S String in Unix Timestamp Java Basics - Anfänger-Themen 11
G Timestamp mal wieder Java Basics - Anfänger-Themen 2
J timestamp Java Basics - Anfänger-Themen 7
S Unix Timestamp entschlüssen Java Basics - Anfänger-Themen 6
H Text in Timestamp umwandeln Java Basics - Anfänger-Themen 3
Z TimeStamp aus MySQL DB umwandeln? Java Basics - Anfänger-Themen 2
A Timestamp Java Basics - Anfänger-Themen 4
C Darstellung von Datum - Codes richtig? Java Basics - Anfänger-Themen 2
L Datum - Monat und Jahr werden falsch angezeigt Java Basics - Anfänger-Themen 4
T Datum als Variable wert Java Basics - Anfänger-Themen 4
T Datum in die als Variabelwert Java Basics - Anfänger-Themen 5
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
berserkerdq2 Wie datum im default format speichern? Java Basics - Anfänger-Themen 5
W Methode, die mit einem Datum arbeitet? Java Basics - Anfänger-Themen 22
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
J Datum ermitteln ? Java Basics - Anfänger-Themen 14
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
J JDatePicker: Datum wird nicht in Textfeld übernommen Java Basics - Anfänger-Themen 5
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
N Ein Datum berechnen Java Basics - Anfänger-Themen 3
T Datum und Uhrzeit Java Basics - Anfänger-Themen 4
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
B Datum in dieser Range SQL? Java Basics - Anfänger-Themen 3
F Ein Datum (int) durch Methode als String formatieren Java Basics - Anfänger-Themen 2
D Kontoauszüge von bestimmtem Datum Java Basics - Anfänger-Themen 35
B Termine (Datum erstellen), Abhängig von Intervallen Java Basics - Anfänger-Themen 0
A Nächstes Datum ausgeben, if-Schleife unklar Java Basics - Anfänger-Themen 6
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
Bluedaishi Datum in Jtextarea füllen Java Basics - Anfänger-Themen 5
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
S Datum umformatieren Java Basics - Anfänger-Themen 2
D Datum aus Swing in MySQL DB speichern Java Basics - Anfänger-Themen 22
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
T Datum wird auf der Konsole richtig ausgegeben, aber im Textarea kommt ERROR Java Basics - Anfänger-Themen 8
D Projekte + Datum + löschen Java Basics - Anfänger-Themen 11
M Datum serialisieren Java Basics - Anfänger-Themen 1
S Datum einlesen Java Basics - Anfänger-Themen 1
D Aktuelles Datum wird falsch ausgegeben Java Basics - Anfänger-Themen 2
K Methoden Datum parsen Java Basics - Anfänger-Themen 16
C JList Einträge nach Datum sortieren Java Basics - Anfänger-Themen 3
MiMa Jüngstes Datum ermitteln Java Basics - Anfänger-Themen 4
2 Uhrzeit und Datum aktualisieren Java Basics - Anfänger-Themen 12
R Problem beim Wochenplan (Datum,Wochentag) Java Basics - Anfänger-Themen 30
O Datum-Werte gruppieren Java Basics - Anfänger-Themen 6
J Java Datum- Zeit Differenz bilden! Java Basics - Anfänger-Themen 4
B Kontoauszug mit Datum ausgeben Java Basics - Anfänger-Themen 4
M Datum in Millisekunden allerdings ohne Uhrzeit Java Basics - Anfänger-Themen 4
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
T Datum mit einem Datums-Bereich vergleichen Java Basics - Anfänger-Themen 10
J Datum und Uhrzeit in Datenbank falsch hinterlegt Java Basics - Anfänger-Themen 13
L Aus Datum Millisekunden ermitteln ohne Zeitzonen-Berücksichtigung Java Basics - Anfänger-Themen 6
P Wieviele Tage seit dem Datum vergangen sind Java Basics - Anfänger-Themen 5
P Liste nach Datum sortieren Java Basics - Anfänger-Themen 7
B tageszahl in Datum umrechnen Java Basics - Anfänger-Themen 6
F Datum Differenz berechnen Java Basics - Anfänger-Themen 7
B String in Datum Java Basics - Anfänger-Themen 3
M CompareTo soll Datum sortieren Java Basics - Anfänger-Themen 2
K Daten (im Sinne von Datum) aus Webseiten extrahieren Java Basics - Anfänger-Themen 6
AssELAss String in Datum umwandeln Java Basics - Anfänger-Themen 4
I Datum und Uhrzeitpattern von Locale Java Basics - Anfänger-Themen 7
H Wie wandel ich ein Datum in eine Zeichenkette um mit StringBuffer? Java Basics - Anfänger-Themen 3
I Datum ohne GregorianCalendar und co. Java Basics - Anfänger-Themen 3
A Datum zwischen zwei Daten berechnen und in Tagen anzeigen Java Basics - Anfänger-Themen 4
N Datum abgleichen und Frage zum Layout Java Basics - Anfänger-Themen 3
D Wochentag für eingegebenes Datum bestimmen anhand von Formel Java Basics - Anfänger-Themen 2
E Zeit zum bestimmten Datum in millisekunden berechnen Java Basics - Anfänger-Themen 5
M Aktuelles Datum in MySQL speichern Java Basics - Anfänger-Themen 11
P Datum umwandeln Java Basics - Anfänger-Themen 5
A Datum formatieren Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben