![]() |
Android 15 und OneUI7.0 werden die Uhrzeiten 12 Stunden format angezeigt
Also einige User deren Samsung Smartphone ein Update auf Android 15 und OneUI 7.0
erfahren haben bekommen die Uhrzeiten die in der App angezeigt werden im 12 Stunden format angezeigt. Obwohl die System Uhrezit auf 24h format eingestellt ist. Hat jemand so eine Erfahrung gemacht?
Delphi-Quellcode:
initialization
CommonFormat := TFormatSettings.Create('de-DE');// Das wird schon alles initialisiert CommonFormat.ShortDateFormat := 'DD.MM.YYYY'; FormatSettings := TFormatSettings.Create('de-DE');// Das wird schon alles initialisiert FormatSettings.ShortDateFormat := 'DD.MM.YYYY'; Das wird so dargestellt
Delphi-Quellcode:
TimeToStr(self.Time,CommonFormat),
DateToStr(self.Date,CommonFormat), |
AW: Android 15 und OneUI7.0 werden die Uhrzeiten 12 Stunden format angezeigt
Kann man nicht auch für die Zeit entsprechende Formatsettings angeben?
So sollte es gehen. FS := TFormatSettings.Create; FS.ShortTimeFormat := 'HH:mm'; FS.LongTimeFormat := 'HH:mm:ss'; |
AW: Android 15 und OneUI7.0 werden die Uhrzeiten 12 Stunden format angezeigt
Zitat:
In unseren APPs lösen wir das bei der Sprachauswahl und setzen das Format Global über die Formatsettings. Dann muss man nicht jede stelle ergänzen wo DateTimeToStr oder TimeToStr genutzt wird.
Delphi-Quellcode:
var
FS: TFormatSettings; LanguageCode: string; begin LanguageCode := 'de-DE'; FS := TFormatSettings.Create(ALanguageCode); FS.ShortTimeFormat := 'HH:mm'; FS.LongTimeFormat := 'HH:mm:ss'; FormatSettings := FS; end; |
AW: Android 15 und OneUI7.0 werden die Uhrzeiten 12 Stunden format angezeigt
Also ich setze die Formatsettings ja auch zentral im initialization Teil meiner Typen-Sammel-Unit...
So wie es aussieht müsste per marshalling ICUlib geladen werden, wenn man den Locale 'de-DE' angibt das wird im falle von Android in 'de_DE' umgewandelt... Und wenn der Code nicht in der ICU lib gefunden wird nimmt Sysutils die 'en_US' settings... Ich habe das leider noch nicht debuggen können(habe kein Android 15) aber ich denke Delphi sollte das korrigieren und weiter funktionieren! Da ich leider keinen Zugriff auf Quality central habe kann ich den Fehler auch nicht melden. Ich habe außerdem bemerkt das Mein App als einzige nicht in der "App-Sprache" liste der Einstellungen auftritt. In dieser Liste werden Apps gelistet die eine Sprachauswahl unterstützen. Ich unterstütze aber keine Sprachauswahl da ich keinen Support in anderen Sprachen liefern kann. Würde der Locale Code wieder funktionieren wenn die App in der Sprachauswahl liste auftauchen würde? Und wo legt man fest das die App Sprachauswahl unterstützt ? Hat jemand eine App die in der Liste ist und bei der trotzdem der Locale code nicht funktioniert? Gemini meint ich soll die locales_config.xml vernünftig konfigurieren wtf??? An anderer Stelle heist es, dass seit Android 15 Setlocale nur noch innerhalb einer Activity funtioniert...und dann für alle Activities die davon abgehen gesetzt bleibt... Ich rufe das Locale ja ab befor irgendeine activity (Form ???) erzeugt ist und ich brauche das ja auch schon vorher. Im Moment sieht die Lösung so aus??? Wie machen das Firmen mit mehr als einer unterstützten Sprache?
Delphi-Quellcode:
{
CommonFormat := TFormatSettings.Create('de-DE');// Das wird schon alles initialisiert CommonFormat.ShortDateFormat := 'DD.MM.YYYY'; } CommonFormat.LongDateFormat := 'DD.MM.YYYY'; CommonFormat.CurrencyString := '€'; CommonFormat.CurrencyFormat := 3; CommonFormat.NegCurrFormat := 8; CommonFormat.CurrencyDecimals := 2; CommonFormat.TimeAMString := ''; CommonFormat.TimePMString := ''; CommonFormat.ShortTimeFormat := 'hh:mm:ss'; CommonFormat.LongTimeFormat := 'hh:mm:ss,zzz'; CommonFormat.ThousandSeparator := '.'; CommonFormat.DecimalSeparator := ','; CommonFormat.DateSeparator := '.'; CommonFormat.TimeSeparator := ':'; { FormatSettings := TFormatSettings.Create('de-DE');// Das wird schon alles initialisiert FormatSettings.ShortDateFormat := 'DD.MM.YYYY'; } FormatSettings.LongDateFormat := 'DD.MM.YYYY'; FormatSettings.CurrencyString := '€'; FormatSettings.CurrencyFormat := 3; FormatSettings.NegCurrFormat := 8; FormatSettings.CurrencyDecimals := 2; FormatSettings.TimeAMString := ''; FormatSettings.TimePMString := ''; FormatSettings.ShortTimeFormat := 'hh:mm:ss'; FormatSettings.LongTimeFormat := 'hh:mm:ss,zzz'; FormatSettings.ThousandSeparator := '.'; FormatSettings.DecimalSeparator := ','; FormatSettings.DateSeparator := '.'; FormatSettings.TimeSeparator := ':'; |
AW: Android 15 und OneUI7.0 werden die Uhrzeiten 12 Stunden format angezeigt
Die funktion die funktionieren muss ist
Delphi-Quellcode:
aus der unit System.Internal.ICU
udat_open: function(timeStyle: UDateFormatStyle; dateStyle: UDateFormatStyle;
const locale: MarshaledAString; const tzID: PUChar; tzIDLenght: Int32; const pattern: PUChar; patternLenght: Int32; var status: UErrorCode): PUDateFormat; cdecl; das ist die C funktion ![]()
Delphi-Quellcode:
daran hat sich anscheinend nichts geändert sieht korrekt importiert aus.
udat_open: function(
timeStyle: UDateFormatStyle; //UDateFormatStyle timeStyle dateStyle: UDateFormatStyle; //UDateFormatStyle dateStyle const locale: MarshaledAString; //const char* locale const tzID: PUChar; //const UChar* tzID tzIDLenght: Int32; //int32_t tzIDLength const pattern: PUChar; //const UChar* pattern patternLenght: Int32; //int32_t patternLength var status: UErrorCode //UErrorCode* status ): PUDateFormat; cdecl; //U_CAPI UDateFormat* hm |
AW: Android 15 und OneUI7.0 werden die Uhrzeiten 12 Stunden format angezeigt
Es ist so traurig...
der rückgabe wert ist einefach ein Zeiger auf Daten...ohne durch den tyo vorgegeben struktur...da kann sich was drann ändern und kein compiler merkt es...wtf. Und ich dachte schon C wäre ok. |
AW: Android 15 und OneUI7.0 werden die Uhrzeiten 12 Stunden format angezeigt
Aktueller QP-Report dazu (nicht von mir):
![]()
Code:
The cause for the two wrong inialized FormatSettings strings can be found in the unit System.SysUtils, class function TFormatSettings.TranslateDateFormat, local function ICUGetDateTimeFormat. On Android 15 the call to udat_toPatternRelativeTime sets the ErrorConv variable to E_ILLEGAL_ARGUMENT_ERROR, that means that the call failed. Due to this unsuccessful call (and no error check) the result string is empty, so the overall result is the default value h:nn AMPM.
|
AW: Android 15 und OneUI7.0 werden die Uhrzeiten 12 Stunden format angezeigt
Code:
Also wird udat_toPatternRelativeTime irgendwie falsch von embarcadero mit werten versorgt oder?
On Android 15 the call to udat_toPatternRelativeTime sets the ErrorConv variable to E_ILLEGAL_ARGUMENT_ERROR, that means that the call failed.
Ich meine Android 15 wird ja nicht immer Fehler melden wenn da keine Fehler sind? können wir auf einen Patch hoffen (ich habe keinen zugang zu QC) ? |
AW: Android 15 und OneUI7.0 werden die Uhrzeiten 12 Stunden format angezeigt
Die Anfrage ist vom 23.05.25 und steht auf offen. Mehr Informationen bekommt man vom neuen Quality-Portal leider nicht. Hab mal ein +1 rein geschoben. Ob es einen Patch geben wird oder nicht, dass gibt dir meistens noch nicht mal jemand von Emba. Aber eins kann ich dir mit Sicherheit sagen, es wird dauern. :roll:
|
AW: Android 15 und OneUI7.0 werden die Uhrzeiten 12 Stunden format angezeigt
Ich meine wir haben ja den quellcode und könnten ihn überarbeiten....leider bin ich nicht so gut in C und Marshallen...Obwohl die ICU lib auf github rumliegt.
Oder wir haben glück und ICUlib hat den Fehler und Android patched das in 12 monaten raus...lol |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz