"Zahlenkette" ins richtige Format für _DateDiff() bringen

  • Hey,

    ich habe mal wieder ein Problem ... :(

    Folgende "Zahlenkette" liegt vor

    Code
    20090607203500


    Die Reihenfolge stimmt soweit also Jahr/Monat/Tag Stunden:Minuten:Sekunden

    Nur wie formatiere ich den String in ein _DateDiif() konformes Format?

    Ich dachte zuerst an Stringsplit

    [autoit]


    $date = 20090607203500
    $sdata = Stringsplit($data, "")
    $formatdata = $sdate[1] & $sdate[2] & $sdate[3] & $sdate[4] & "/" & $sdate[5] & $sdate[6] & "/" $sdate[7] & $sdate[8] & " &" $sdate[9] & $sdate[10] & ":" usw.

    [/autoit]


    Das würde theoretisch funktionieren, ist aber sehr aufwendig.

    Mit StringRegExpReplace scheitere ich irgendwie (Die unterschiedlichen Trennzeichen machen mir zu schaffen). Vielleicht gelingt es ja von euch jemand?

    Gruß nuts

    Einmal editiert, zuletzt von nuts (6. Juni 2009 um 23:18)

  • Also ich hatte folgende Idee, aber irgendwie sagt er immer -1

    Spoiler anzeigen
    [autoit]


    #include<Date.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $var1 = StringMid("20090607203500", 1, 4)
    MsgBox(0, "Folgende 4 Zeichen werden ab Position 5 extrahiert:", $var1)
    $var2 = StringMid("20090607203500", 5, 2)
    MsgBox(0, "Folgende 4 Zeichen werden ab Position 5 extrahiert:", $var2)
    $var3 = StringMid("20090607203500", 7, 2)
    MsgBox(0, "Folgende 4 Zeichen werden ab Position 5 extrahiert:", $var3)
    $var4 = StringMid("20090607203500", 9, 2)
    MsgBox(0, "Folgende 4 Zeichen werden ab Position 5 extrahiert:", $var4)
    $var5 = StringMid("20090607203500", 11, 2)
    MsgBox(0, "Folgende 4 Zeichen werden ab Position 5 extrahiert:", $var5)
    $var6 = StringMid("20090607203500", 13, 2)
    MsgBox(0, "Folgende 4 Zeichen werden ab Position 5 extrahiert:", $var6)

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, "", "Monate: " & _DateDiff('M', $var1&"/"&$var2&"/"&$var3&" "&$var4&":"&$var5&":"&$var6, _NowCalc()))

    [/autoit]

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Ich hätte es so gemacht

    Spoiler anzeigen
    [autoit]

    $date = 20090607203500
    $adate = StringRegExp($date, ".{2}", 3)
    MsgBox(0,"", StringFormat("%s%s/%s/%s %s:%s:%s", $adate[0], $adate[1], $adate[2], $adate[3], $adate[4], $adate[5], $adate[6]))

    [/autoit]

    k.A. ob's noch kürzer geht.

  • @ funkey

    Wieso kommt bei mir immer -1 raus ?

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • ich würds so machen

    [autoit]

    #include <String.au3>
    $date = "20090607203500"

    [/autoit][autoit][/autoit][autoit]

    $date_ok = _StringInsert($date, "/", 4)
    $date_ok = _StringInsert($date_ok, "/", 7)
    $date_ok = _StringInsert($date_ok, " ", 10)
    $date_ok = _StringInsert($date_ok, ":", 13)
    $date_ok = _StringInsert($date_ok, ":", 16)

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite($date & @CRLF)
    ConsoleWrite($date_ok & @CRLF)

    [/autoit]
  • funkey

    Danke DIR. Bin doch nur äußerlich blond. LOL

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Danke an alle. :thumbup:

    Wird Zeit das ich mich intensiver mit den String-Funktionen befasse.

    So-lan-ge Du ihn nicht aus ziehst. :rofl:

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Der Einzeiler fehlt noch :D

    [autoit]

    MsgBox(0, '', StringRegExpReplace("20090607203500", "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})", "\1/\2/\3 \4:\5:\6"))
    MsgBox(0, '', StringRegExpReplace("20090607203500", "(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)", "\1/\2/\3 \4:\5:\6"))
    ; und die schlechteste Lösung
    MsgBox(0, '', StringRegExpReplace("20090607203500", "(....)(..)(..)(..)(..)(..)", "\1/\2/\3 \4:\5:\6"))

    [/autoit]