Problem mit Datumsformat!



  • Hallo Forum,
    wie kann ich aus einen CString der ein Datum enthält das Jahr Monat und Tag extrachieren ohne die CString Funktionen zu benutzen,
    das Datum steht in diesem Format:
    Bsp.:
    Fri, 21 Oct 2005 14:07:26 GMT
    das "Fri," und "GMT" müssen hier raus!
    Die Funktion von COleDateTime::ParseDateTime() bricht hier ab wegen den genannten
    Teilstrings Fri, und GMT
    Gibts welche Funktionen von CTime die das erledigen können ohne das ich mit
    CString::Remove(L"GMT"); usw.
    arbeiten muß?
    Und das Datum ist die Zeit der letzten aktuallisierung einer Datei!
    Also so was wie GetLastModified();

    grüsse
    pixel



  • Was spricht denn dagegen, den CString vorher passend aufzubereiten?

    Btw, wenn du das Format kennst, könntest du die Einzelteile des Datums auch von Hand (sscanf()) dort auslesen und daraus deinen CTime-Wert zusammenbauen.


  • Mod

    Hast bei ParseDateTime einfach mal mit einer LCID

    LCID lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT);
    

    versucht?



  • Hallo Martin,
    nein hab ich nicht, der Grund warum ich nach anderen Lösung suche ist der das ich
    u.U. viele Dateien habe, dan würde ich in einer Schleife zu viele CString aufrufe haben, ich hab das mit

    LCID lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT);

    noch nicht probiert!!!

    also so ist jetzt:

    if(L"" != csLastModified)
    {			
        // csLastModified hat diesen Format: Fri, 21 Oct 2005 14:07:26 GMT 	
    	csLastModified.Delete(0, csLastModified.Find(',')+1);
    	csLastModified.Replace(L"GMT",L"");
    	csLastModified.TrimLeft();
    	csLastModified.TrimRight();
    	//cTime = (CTime)csLastModified;
    	//csTimeCurr = cTime.Format(csTimeFormatW3C);
    	cOleTime.ParseDateTime(csLastModified);
    	CTime cTime(cOleTime.GetYear(), cOleTime.GetMonth(), cOleTime.GetDay(),cOleTime.GetHour(), cOleTime.GetMinute(), cOleTime.GetSecond());
        csTimeCurr = cTime.Format(csTimeFormatW3C);
    	....
        // 
    }
    

    das ist ine einer Schleife, bei vielen Dateien hab ich bedenken wegen der Geschwindigkeit!

    mfg
    pixel



  • Wie kann ich dann das licd verwenden?
    COleDateTime.ParseDateTime() funktioniert nur mit Deutschen Monaten,
    z.B.:

    CString csTime = L"21 Oct 2005 11:49:32";
        COleDateTime::ParseDateTime(csTime); // Fehler, wegen "Oct"
        csTime = L"21 Okt 2005 11:49:32";
        COleDateTime::ParseDateTime(csTime); // ok, da jetzt nicht "Oct" sondern "Okt" steht
        // selbe problem mit anderen Monaten, ich kann aber den gelesenen Datum nicht beeinflußen???
    

    😕

    pixel



  • pixel schrieb:

    u.U. viele Dateien habe, dan würde ich in einer Schleife zu viele CString aufrufe haben, ich hab das mit

    LCID lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT);

    noch nicht probiert!!!

    Dann solltest du es mal probieren 😉

    LCID lcid = MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT);
    
    ...
    //in der Schleife:
    time.ParseDateTime(scTime,0,lcid);
    


  • Danke, funktioniert bestens! 👍 😉

    MFG
    pixel


Anmelden zum Antworten