Datum String zu Datum

Tejo1986

Mitglied
Hey,

ich habe bei mir das Datum in einen String geschrieben, brauche es allerdings in nem richtigen Datumsformat, um denn .roll Befhel ausführen zu können.

Der String wird erzeugt durch:
Java:
returngetOracleDate (calender.get8Calender.DAY_OF_MONTH), etc. bis zur Sekunde runter

Wie bekomme ich den String den mit diese Methode liefert konvertiert, das er die .roll Methode dann kann ?
 
z.B.

Java:
public static Date stringToDate(String s, String format) {
  SimpleDateFormat sdfToDate = new SimpleDateFormat(format, Locale.GERMANY);
  Date date = new Date();
  try {
    date = sdfToDate.parse(s);
  } catch (Exception e) {
    e.printStackTrace();
  }
		
  return date;
}

Aufruf dann z.B. mit stringToDate("2010_11_24_09_18_30", "yyyy_MM_dd_HH_mm_ss")
 
Zuletzt bearbeitet:
Hey,

Er meint: cannot finde varibale locale......von locale.GERMANY....muss ich da was importen ?

den Aufruf in einer anderen Klasse mache ich jeze so:

Java:
 Datum.stringToDate(validfrom,"yyyy.MM.dd HH:mm:ss");
        old_validto = validfrom.roll(Calendar.SECOND,-1);

Er meckert irgendwie, dass er die roll Methode nich kennt ?!
 
Zuletzt bearbeitet:
Java:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

für die Zukunft, kannst du hier kucken: Java Platform SE 6

freunde dich frühstmöglich mit der API an. ist unabdinglich..

edit: die ParseException kannste dir bei dem "Exceptionhandling", was dir Jens81 vorgeschlagen hat, sparen..
 
Zuletzt bearbeitet:
Oh das sieht schonal gut aus.

Für die validfrom.roll hab ich auf dem Link nix gefunden.

old=new.roll(Calender.Second,-1) meckert er, dass er das Symbol nich finden kann ?
Was für ein Symbol ?
 
man müsste wissen, von welcher Klasse validform ein Objekt ist.

old=new.roll(Calender.Second,-1) kann aber auch nicht sein. Ist roll eine Klasse? Wenn ja müsste es erstens Roll heissen und zweitens
old=new Roll(Calender.Second,-1);
 
Java:
 change_dt = date.getOracleDateNow();
        validfrom = change_dt;
        Datum.stringToDate(validfrom,"yyyy.MM.dd HH:mm:ss");
        old_validto = validfrom.roll(Calendar.SECOND,-1);

Wobei vaildfrom nen String is und mit stringtoDate ja nen Datum liefern sollte ?!

Fehler is: cannot find Symbol, symbol: Method roll(int,int)
 
roll ist eine Methode der Klasse Calendar und nicht der Klasse String, daher kann man die auch nicht an einem Objekt vom Typ String aufrufen. !!Grundlagen!!

Du müsstest aus/anhand des Strings erst ein Objekt vom Typ Calendar erstellen, um diese Methode verwenden zu können.
 
stringToDate liefert ein Datum -> das musst du auch einer Variablen zuweisen:

Java:
Date datum = stringToDate(...);

Dann mit datum weiterarbeiten
 
So....

ich hab in der StringtoDate Methode jeze die variable date, am ende kommt dann return date

Da is doch dann das Datum in der Variable date drin ?

old=Datum.dat3.roll(...) geht aber auch nich...diesmal unterschtreicht er mir date und sagt er kann es nich finden.
date is aber in der Klasse Datum, wird dort erzeugt und mit dem fertigen Datum gefüllt.
Die Methode is public, also sollte er ja aus anderen Klassen darauf zugreifen können oder ?
 
old=Datum.dat3.roll(...) geht aber auch nich...diesmal unterschtreicht er mir date und sagt er kann es nich finden.
date is aber in der Klasse Datum, wird dort erzeugt und mit dem fertigen Datum gefüllt.
Die Methode is public, also sollte er ja aus anderen Klassen darauf zugreifen können oder ?
was?


1. Was willst du machen?
2. Wie sieht dein gesamter Code aus?



Datum.dat3.roll(...) :noe: was soll das?
 
Zuletzt bearbeitet:
Ok.
Ich habe die Klasse Datum und die Klasse Handler.
Ich habe Gültigkeiten, die Aktualisert werden können.
Ist das der fall, wird die Gültigkeit des alten auf genau 1 Sekunde vor die des neuen gesetzt.
Das neue beginnt ab jetzt. Das alte will ich für Doku Zwecke erstmal nicht löschen.

In der Klasse Datum ist die o.g. methode drin, um einen String in in ein Datum umzuwandeln.
Hier findet auch das parsen im SimpleDateFormat statt.

Java:
public static Date stringToDate (String s, String format){
        SimpleDateFormat sdf = new SimpleDateFormat (format, Locale.GERMANY);
        Date date = new Date();
        try{ date = sdf.parse(s);}
        catch (Exception e){e.printStackTrace();}return date;
        }

In der Klasse Handler erzeuge ich ein Datum, allerdings im String Format.
Wandle es dann mithilfe der Klasse stringToDate in eine Datum um, und möchte es abschließend um genau 1 Sekunde zurück setzen, damit es direkt vor dem neuen Endet.

Java:
        change_dt = date.getOracleDateNow();
          Datum.stringToDate(change_dt,"yyyy.MM.dd HH:mm:ss");
        validfrom = change_dt;
        old_validto = Datum.date.roll(Calendar.SECOND,-1);
 
date ist nur innerhalb der Methode stringToDate() definiert.

Durch das return liefert die Methode dir das Datum. Dieses musst du dann einer Variablen außerhalb der Methode zuweisen. Wie das geht, siehe mein letztes Posting.

Zurücksetzen um 1 Sek kannst du auch ohne roll.
Java:
Date datumMinusEineSekunde = new Date(deinDatumAusDerMethode.getTime()-1000);
 
Zuletzt bearbeitet:
Zum einen:
Date != Calendar

Die Klasse Date besitzt keine Methode roll() oder der gleichen.

Zum anderen:
Solltest Du Dir mal anschauen, wie man in Java Methoden aufruft und Rückgabewerte annimmt.
Oder vielleicht mit den Grundlagen der objektorientierten Programmierung im Allgemeinen bzw. der Programmieren in Java im Speziellen anfangen.
 
Compilierbares Bsp.:
Java:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Test {

	public static Date stringToDate(String s, String format) {
		SimpleDateFormat sdfToDate = new SimpleDateFormat(format, Locale.GERMANY);
		Date date = new Date();
		try {
			date = sdfToDate.parse(s);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return date;
	}
	
	public static void main(String[] args) {
		//Dein Datumswert als String
		String deinDatum = "2010.11.24 13:48:59"; 
		//String -> Date
		Date datum = stringToDate(deinDatum, "yyyy.MM.dd HH:mm:ss");	
		//Date in Millisekunden - 1000 Millisekunden -> neues Datum
		Date datumMinusEineSekunde = new Date(datum.getTime()-1000);
		//Ausgabe
		System.out.println(datumMinusEineSekunde);
	}
}
 
@TO: Schonmal daran gedacht, das Datum vielleicht als Datum zu speichern und nicht als String? Würde die ganze Sache enorm vereinfachen 😛
 

Zurück
Oben