DateTimeToStr i format daty w Windowsie

DateTimeToStr i format daty w Windowsie
SV
  • Rejestracja:ponad 13 lat
  • Ostatnio:10 miesięcy
  • Lokalizacja:Warszawa
  • Postów:62
0

Witam,
mam następujące pytanie.
Funkcja DateTimeToStr zwraca date i czas w takiej postaci 01.01.2017 08:00:00 a na innych kompach np 01.01.2017 08:00:00 AM
Te dwa zapisy zależa od ustawień regionu formatu daty. z AM zwracane jest gdy mamy ustawione w windowsie region angielski, amerykański. Bez AM gdy lokalny, Polski.
Jednak w paru przypadkach mimo ustawienia regionu polskiego dalej zwraca z AM.
Sprawdzane na Windows 10.
Czy format zwracanej daty i czasu może jeszcze zależeć od jakiś innych ustawień windowsa ?

edytowany 1x, ostatnio: flowCRANE
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 4 godziny
  • Lokalizacja:Tuchów
  • Postów:12173
0

Pokaż kod, którego używasz do pobrania daty.

Czy format zwracanej daty i czasu może jeszcze zależeć od jakiś innych ustawień windowsa ?

Zobacz tutaj jak wygląda sprawa z tymi funkcjami.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
SV
  • Rejestracja:ponad 13 lat
  • Ostatnio:10 miesięcy
  • Lokalizacja:Warszawa
  • Postów:62
0

Np taki. Wiem jak wymusić by uzyskać taki format jak potrzebuje. Jednak nie o to pytam.
Bardziej mi chodzi o to jak sterować ustawieniami windowsa.

Kopiuj
procedure TForm1.Button1Click(Sender: TObject);
var d1 : TdateTime;
begin
 d1 := IncMinute(now, 480);
 showmessage(DateTimeToStr(d1));
end;
 
edytowany 1x, ostatnio: flowCRANE
GS
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 11 godzin
0

Funkcję DateTimeToStr używam tylko w sytuacji kiedy na szybko (np. podczas testów) muszę zwizualizować wartość "Tdatetime" w jakiejś kontrolce (label, dataset ...) albo w ShowMessage.
W każdym innym przypadku "rozbijam" "TdateTime" na elementy składowe przy pomocy procedury 'decodedatetime' , która jest niezależna od regionalnych ustawień systemu.
Rozbijasz TdateTime na 7 wartości typu WORD i z nich budujesz sobie stringa niezależnego od od systemowych ustawień

edytowany 2x, ostatnio: grzegorz_so
GS
dlaczego jaja ? może nieprecyzyjnie napisałem. Wiem, pytacz pisał o wizualizacji jako string wartości typu TDateTime . Bardziej chodziło mi o "obróbkę" takiej wartości, niekoniecznie w celu zamiany na stringa
abrakadaber
abrakadaber
bo obrabiać powinno się datę jako datę (ew. datę i czas). Jedyny przypadek jaki potrafię sobie wyobrazić, kiedy potrzebujesz mieć każdą składową w innej zmiennej, to pokazanie ich potem każde w innym komponencie.
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:8 miesięcy
  • Postów:6610
2
  1. jeśli potrzebujesz daty jako napis w zawsze takim samym formacie to NIE UŻYWAJ funkcji, które zależą od ustawień windowsa
  2. zmiana (wymuszanie zmiany) ustawień windowsa aby Twój program działał poprawnie to BARDZO ZŁY sposób
  3. zamiast DateTimeToStr użyj FormatDateTime i sam podawaj format, jaki chcesz mieć na wyjściu

Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
SV
  • Rejestracja:ponad 13 lat
  • Ostatnio:10 miesięcy
  • Lokalizacja:Warszawa
  • Postów:62
0

Dziękuję za odpowiedzi. Oczywiście macie tu racje i powinienem sam sobie określać format daty jaki chce uzyskać. Tak też robię w każdym normalnym przypadku.
Tu akurat było przeoczenie i z pewnych powodów brak możliwości wygenerowania wersji naprawczej stąd, chciałem tym sterować z innej strony.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.