AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TDateTimePicker und datetostr

Ein Thema von jaikai · begonnen am 15. Nov 2005 · letzter Beitrag vom 15. Nov 2005
Antwort Antwort
jaikai

Registriert seit: 1. Jun 2005
70 Beiträge
 
#1

TDateTimePicker und datetostr

  Alt 15. Nov 2005, 23:00
Hi Leute,

folgendes Problem:

Code:
DateTimePicker1.MinDate := strtodate('01.01.1900'); // früher geht wohl nicht
// Objektinspektor:
// Kind := dtkDate;
// DateFormat : dfShort
So - wenn ich jetzt bsp. das Jahr 1901 nehme und mit

Code:
FormatDateTime( 'yyyy.mm.dd', StrToDate(datetostr(DateTimePicker1.date)));
so zu einem listenfähigen ISO-date umschreibe, den ich auch wieder mittels

Code:
var datum2 : Tdate;

// S ist das ISO-date als String
Datum2 := EncodeDate ( strtoint(copy(s, 1, 4 )),
                          strtoint(copy(s, 6, 2 )),
                          strtoint(copy(s, 9, 2 )) );

   S2 := FormatDateTime( datetostr(Datum2), Datum2) ;
rückverwandle, dann bekomme ich bei Jahres-Werten wie 1901, 1933 etc Jahreswerte zurück die 2001, 2033 heißen und glatte 100 Jahre danebenliegen. Mit

Code:
ShortDateFormat := 'dd.mm.yyyy';
fange ich das deutsche Datumsproblem ab. Kollabiert aber sofort, wenn ich meine Rechner auf Gebietsschema UK oder USA ändere. Aber was mache ich, wenn das Ding in England oder den USA läuft?

Gibts ne Möglichkeit das 'ShortDateFormat' länderspezifisch und per Runtoime einzulesen, bzw zu setzen - oder gibts eine andere Möglichkeit?

Danke
Wenn die Programme das machen, wie's wir machen, wären sie unbrauchbar...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

Re: TDateTimePicker und datetostr

  Alt 15. Nov 2005, 23:28
Das liegt bestimmt an dem DateFormat = dfShort ... ich weiß es jetzt zwar nicht genau (kenn diese Komponente kaum), aber ich vermute mal, daß dadurch das Jahr nur 2-stellig gehandhabt wird
und bei 2 stellig geht es halt nur in einem bestimmten Bereich (aktuell wohl zwischen 1950 und 2049 - dieser Bereich kann irgendwo im Programm und Windows eingestellt werden und wird standardmäßig von Windows übernommen), da dort ja die Jahrhundertangabe fehlt.
Du solltest also bei DateFormat etwas mit long verwenden, also die Unterstützung für 4-ställige Jahreszahlen aktivieren.


Dann ist DateTime auch in dem vollen Bereich nutzbar ^^
Code:
TDateTime  Double  Number of days since 30.12.1899 00:00
                     01.01.0001 - 31.12.9999 (-693593,99999..2958465,99999)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 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