# VBScript - String in DateTime (zum späteren Rechnen mit Datumswerten)



## rheini (8. August 2011)

Hallo,

ich bin schier am verzweifeln. Ich versuche seit geraumer Zeit einen String in bestimmtem Format (YYYYMMDD HH24MMSS) in eine Datumsvariable zu quetschen und scheiter kläglich 

Ich habe mich an CDate(), FormatDate(), Format$() und FormatDateTime() versucht. Is nich. Bin zu doof.

Weiß jemand Rat?


----------



## tombe (9. August 2011)

Wie sieht den der String aus und was hast du mit den oben genannten Anweisungen gemacht?

Ist der String in Form von "YYYMMDD HHMMSS" formatiert oder soll der String in dieses Format umgewandelt werden?

Wenn du kläglich scheiterst, wird dann ein Fehler ausgegeben oder bekommst du nur ein falsches Ergebnis?

Fragen über Fragen.


----------



## rheini (10. August 2011)

Hallo tombe,
erst mal danke für die Antwort. 

Der String ist in genanntem Format (YYYYMMDD HH24MMSS). Allerdings wäre ich auch in der Lage, diesen umzubaun, auf ein anderes Format. Die Jahreszahl ans Ende zu packen z. B.. 

Die Fehlermeldungen, die ich erhalte sind allesamt Laufzeitfehler. Bei CDate() verwende ich eine falsche Anzahl an Attributen, was wohl heisst, dass der Kollege keine Formatangabe mag. Aber woher weiß die Funktion denn dann, was für ein Format das angegebene Datum (der String) hat. Holt sie sich das ausm System? Denn die Amis verwenden als Standarddatenformat ja z. B. MMDDYYYY. 

Deshalb denke ich, muss es doch eine Funktion geben, die einen String aufnimmt, eine Formatangabe und das dann zum Datum konvertiert ...


----------



## tombe (10. August 2011)

Wenn du den String formatieren kannst, dann verpasse ihm mal Trennzeichen zwischen den einzelnen Angaben.

So klappt es bei mir:


```
Dim text As String
Dim datum As Date

text = "2011-08-10 15:01:45"

datum = CDate(text)

If IsDate(datum) Then
    MsgBox (datum & " ist gültig")
Else
    MsgBox (datum & " ist ungültig")
End If
```

Das Problem bisher war wohl das keine der Funktionen erkennen kann was im String das Datum sein soll. Es ist mehr oder weniger eine große Zahl und die kann nicht ungewandelt werden.


----------



## rheini (11. August 2011)

tombe hat gesagt.:


> Das Problem bisher war wohl das keine der Funktionen erkennen kann was im String das Datum sein soll.



Daher die Suche nach der Magic Funktion, der ich sagen kann, welches Format der String hat 

Danke auf jeden Fall für den Tip. Werds mal so in der Richtung angehen. 

Viele Grüße


----------



## tombe (11. August 2011)

Also alles was ich zum Thema "Text/String in Datum umwandeln" setzt vorraus das der Text bereits formatiert ist. Sonst ist die Konvertierung nicht möglich.

Ein anderer Weg wäre:


```
Dim text As String
Dim datum As Date

text = "20110811 091530"

datum = DateSerial(Mid(text, 1, 4), Mid(text, 5, 2), Mid(text, 7, 2)) & " " & TimeSerial(Mid(text, 10, 2), Mid(text, 12, 2), Mid(text, 14, 2))

If IsDate(datum) Then
    MsgBox (datum)
Else
    MsgBox ("Kein gültiges Datum")
End If
```

Hier ist ein Beitrag bei dem es um genau das gleiche Problem geht wie du es jetzt hast.


----------



## rheini (11. August 2011)

Ja, diesen Beitrag hatte ich auch gefunden. Mittlerweile läuft mein Script auch. Aber ich dachte , es muss doch eine derartige Funktion geben. Das zeigt mal wieder , dass Wunsch != Wirklichkeit


----------

