Announcement

Collapse
No announcement yet.

Datum- und Zeit-Formate in verschiedenen Ländern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datum- und Zeit-Formate in verschiedenen Ländern

    Hallo,
    ich bin zwar im Ordner Mehrsprachigkeit doch ich finde dass gerade Leute in diesem Bereich am meisten über Internationalität wissen.
    Zu meinem Problem:
    Ich möchte ein Programm internationalisieren, das Datums- und Zeiteingaben enthält. Doch wie stellt man das an, wenn man eine möglichst flexible, und umschaltbare Version machen möchte und dabei die Formate von Windows nicht verstellen will? Wie finde ich die Datumsformate heraus, und wie setze ich das um? Gibts eine (einfache) Lösung, das Datumsformat benutzerorientiert und unabhängig der Windows-Einstellungen konfigurierbar zu machen?<Br>
    PS: Habe keine Ahnung wie man die Registry benutzt<br>
    <br>
    Gruss und Vielen Dank für Eure Hilfe zum voraus.

  • #2
    Also das Datumsformat findest z.b über shortdateformat raus. Lies Dir das einfach mal in der Hilfe nach. Umwandeln kannst Du Datumsformate normalerweise über strtodatetime und datetimetostr. Wenn Du ein eigenes Format verwenden willst versuch mal formatdatetime, bzw. überschreibe shortdateformat mit deinen Einstellunge

    Comment


    • #3
      Hallo,

      hatte das gleiche Problem und habe es folgender maßen gelöst:...

      Aber zuerst ein Tip: Auch wenn Bill Gates uns viel Schwierigkeiten bereitet, eines hat er gemacht. Es sind bereits alle Sprachen und Formate für Datum und Uhrzeit, sowie die Namen der Monate und Tage in der jeweiligen Sprache vorhanden.

      Die Definition eines Ländercodes erfolgt folgend:

      const
      ENGLISH = (SUBLANG_ENGLISH_US shl 10) or LANG_ENGLISH;
      GERMAN = (SUBLANG_GERMAN shl 10) or LANG_GERMAN;
      Italiano = (SUBLANG_ITALIAN shl 10) or LANG_ITALIAN;
      Portuguese= (SUBLANG_PORTUGUESE shl 10) or LANG_PORTUGUESE;
      Spain = (SUBLANG_SPANISH shl 10) or LANG_SPANISH;
      Frensh = (SUBLANG_FRENCH shl 10) or LANG_FRENCH;
      CHINESE = (SUBLANG_CHINESE_SIMPLIFIED shl 10) or LANG_CHINESE;

      Die Monatsnamen der jeweiligen Sprache kann man z.B. folgend in eine ComboBox laden:

      ComboBox1.Items.Clear;
      for n := 1 to 12 do
      ComboBox1.Items.Add(GetLocaleStr(Ländercode,LOCALE _SMONTHNAME1+n-1,''));

      und jetzt zur Umwandlung von Datum und Zeit in das jeweilige Landesformat. Eine kleine Funktion bereitet die Formatierung auf und kann nun an "DateTimeToString(var Result: string; const Format: string; DateTime: TDateTime);" übergeben werden:

      Const
      EnglishDate ='MM/DD/YYYY';
      EnglishTime ='hh:mm:ss';
      GermanDate ='DD.MM.YYYY';
      GermanTime ='hh:mm:ss';
      ItalianoDate ='DD/MM/YYYY';
      ItalianoTime ='hh.mm.ss';
      PortugueseDate ='DD/MM/YYYY';
      PortugueseTime ='hh:mm:ss';
      SpainDate ='DD/MM/YYYY';
      SpainTime ='hh:mm:ss';
      FrenshDate ='DD/MM/YYYY';
      FrenshTime ='hh:mm:ss';
      ChineseDate ='YYYY-MM-DD';
      ChineseTime ='hh:mm:ss';
      PolishDate ='YYYY-MM-DD';
      PolishTime ='hh:mm:ss';

      und die Funktion

      function ConvertDateToStr(Date:TDateTime;Lang:Longint):stri ng;
      begin
      result:='';
      case Lang of
      ENGLISH ateTimeToString(Result,EnglishDate,Date);
      GERMAN ateTimeToString(Result,GermanDate,Date);
      Italiano ateTimeToString(Result,ItalianoDate,Date);
      PortugueseateTimeToString(Result,PortugueseDate,Date);
      Spain ateTimeToString(Result,SpainDate,Date);
      Frensh ateTimeToString(Result,FrenshDate,Date);
      CHINESE ateTimeToString(Result,ChineseDate,Date);
      Polish ateTimeToString(Result,PolishDate,Date);
      end;
      end

      Comment

      Working...
      X