Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DateTime aus String. Welches ist es denn nun? (https://www.delphipraxis.net/181199-datetime-aus-string-welches-ist-es-denn-nun.html)

BenneX 24. Jul 2014 12:59

Delphi-Version: XE5

DateTime aus String. Welches ist es denn nun?
 
Hallo Leute,

Ich habe das Datum und die Uhrzeit im folgenden Format (als String) gegeben: 07-24 13:38:35
Mit welcher von den vielen Funktionen kann ich nun dem Compiler vorgeben in welchem Format der String ist (bspw. %m-%d), damit dieser ein TDateTime ausgibt?

Grüße,
Bennex!

mjustin 24. Jul 2014 13:06

AW: DateTime aus String. Welches ist es denn nun?
 
Zitat:

Zitat von BenneX (Beitrag 1266549)
07-24

Mit diesem Datumsformat hätte es nie ein Y2K Problem gegeben ;)

Eine der Lösungen wäre DateUtils.EncodeDateTime, dazu muss nur mit Copy(...) der String in die Komponenten zerlegt und diese dann mit StrToInt umgewandelt werden.

Delphi-Quellcode:
function EncodeDateTime ( const Year, Month, Day, Hour, Min, Sec, MSec : Word ) : TDateTime;

himitsu 24. Jul 2014 13:06

AW: DateTime aus String. Welches ist es denn nun?
 
Na du gehst in die OH (oder schaust in den RTL-Quellcode) und suchst dir aus den DateTime-Funktionen (siehe SysUtils und DateUtils) die Passende aus.

Input: String (dein Datums-String) und ein Format-String, mit deinem gewünschten Format, und eventuell noch ein FormatSettings (bzw. der Format-String im FormatSettings)
Output: TDateTime

Also die Umkehrfunktion von FormatDateTime. :stupid:

[add] Falls es sowas nicht gibt, dann der Vorschlag von mjustin.

ChristianG 24. Jul 2014 13:14

AW: DateTime aus String. Welches ist es denn nun?
 
Delphi-Quellcode:
 lblBUhrzeit.text:= FormatDateTime('hh:nn',bdatumzeit) ;
   lblBDatum.Text := FormatDateTime('dd.mm.yyyy',bdatumzeit) ;
Hilft das

himitsu 24. Jul 2014 13:21

AW: DateTime aus String. Welches ist es denn nun?
 
Zitat:

Zitat von ChristianG (Beitrag 1266552)
Hilft das

6, setzen

Er braucht das andersrum. :wink:


FormatDateTime -> F1 -> Link zu "Routinen für die Typumwandlung" oder "Unterstützung für Datum und Uhrzeit" -> StrToDateTime?
Man muß nur noch schauen ob es das Short- oder LongDateFormat verwendet und ob da drin das gewünschte Format untersützt wird.
http://www.delphipraxis.net/103391-p...odatetime.html

ChristianG 24. Jul 2014 13:29

AW: DateTime aus String. Welches ist es denn nun?
 
Das kann man ja wieder in ein String umwandeln, so habe ich es zumindest gemacht


nction TAppseite1.GetShowDateTime(aDateTime: string): TDateTime;
var sDate, sTime : string;
// FFormatSettings : TFormatSettings;
begin
// input '2004-01-01 14:30'
// output Datum/Uhrzeit als TDateTime

//FFormatSettings := TFormatSettings.Create();

FormatSettings.ShortDateFormat := 'YYYY-MM-DD';
FormatSettings.ShortTimeFormat := 'HH:NN';
FormatSettings.DateSeparator := '-';

sDate := LeftStr(aDateTime, 10);
sTime := RightStr(aDateTime, 5);

result := StrToDate(sDate, FormatSettings) +
StrToTime(sTime, FormatSettings);

end;

Mikkey 24. Jul 2014 13:33

AW: DateTime aus String. Welches ist es denn nun?
 
Zitat:

Zitat von himitsu (Beitrag 1266554)
Er braucht das andersrum. :wink:

Er braucht doch nur 86400 Uhrzeiten und 366 Tage auszuprobieren, bis das herauskommt, was er sucht :lol:

Bernhard Geyer 24. Jul 2014 13:36

AW: DateTime aus String. Welches ist es denn nun?
 
Zitat:

Zitat von mjustin (Beitrag 1266550)
Zitat:

Zitat von BenneX (Beitrag 1266549)
07-24

Mit diesem Datumsformat hätte es nie ein Y2K Problem gegeben ;)

Stimmt. Dieses Format gibt nur an das am 24.07 (des aktuellen Jahres/) etwas geschehen ist/immer wieder geschieht.
Für ein definiertes Format zur Übertragung vollkommen ausreichend wenn man eine Übertragungsmedium verwendet welches keine Verweildauern > 1 Jahr annimmt.

Das Format lehnt sich das ISO8601-Format an.

p80286 24. Jul 2014 13:37

AW: DateTime aus String. Welches ist es denn nun?
 
Zitat:

Zitat von BenneX (Beitrag 1266549)
Ich habe das Datum und die Uhrzeit im folgenden Format (als String) gegeben: 07-24 13:38:35

Ich bevorzuge hier die MJustin Methode, da weiß man was man hat.
(Und beim nächsten mal reißt man sich den A.... dafür auf, daß endlich das ISO-Datum(sformat) verwendet wird)

Gruß
K-H
P.S.
Zitat:

Zitat von Bernhard Geyer (Beitrag 1266558)
Für ein definiertes Format zur Übertragung vollkommen ausreichend wenn man eine Übertragungsmedium verwendet welches keine Verweildauern > 1 Jahr annimmt.

Sag das bloß nicht, denn "das brauchen wir nie mehr" hab ich schon viel zu oft gehört. Und dann sucht man aus irgendwelchen obskuren Seiteneffekten das richtige Jahr.

Bernhard Geyer 24. Jul 2014 15:16

AW: DateTime aus String. Welches ist es denn nun?
 
Zitat:

Zitat von p80286 (Beitrag 1266560)
Sag das bloß nicht, denn "das brauchen wir nie mehr" hab ich schon viel zu oft gehört. Und dann sucht man aus irgendwelchen obskuren Seiteneffekten das richtige Jahr.

Das Format ist z.B. Angaben der Art "01-06" oder "12-24" günstig da diese ja für jedes Jahr gültig sind.

Das untere Beispiel (wenn ich keinen Weiteren Kontext kenne) "07-24 13:38:35" als

"Am 24.07 um 13:38:35" geschah/geschieht/muss etwas geschehen/... interpretieren.
Das Jahr? ist egal. Wenn ich es vor diesem Datum bekomme würde ich als "jedes Jahr zu diesem Datum/Uhrzeit" oder "das nächste Mal wenn dieser Tag/Monat kommmt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz