Portál AbcLinuxu, 4. května 2025 20:52

Dotaz: Lazarus - time

25.11.2016 19:08 Mi-Ki
Lazarus - time
Přečteno: 418×
Odpovědět | Admin
Zdravím. Nevím jestli tu někdo zna komponentu ZVDateTimePicker na nastavovaní dní a hodín.

TDatePicker1 - kind - dtkTme

TDatePicker2 - kind - dtkTme

TDatePicker1 nastavím na 14:14:00.

TDatePicker1 nastavím na 20:12:00.

Uložim do ini

var DataFile: TIniFile; begin

DataFile:=TiniFile.Create ((ExtractFilePath(Application.exename))+'setup.ini');

DataFile.WriteTime('Other','ZVDateTimePicker1',ZVDateTimePicker1.time);

DataFile.WriteTime('Other','ZVDateTimePicker2',ZVDateTimePicker2.time);

DataFile.Free;

end;

Otevřu setup.ini

ZVDateTimePicker1=02:14:00

ZVDateTimePicker2=08:12:00

Problem je jen na linuxu, ve Win je to ok.

Kde muže byt problem.

Je to komponentou nebo linuxem?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.11.2016 20:24 jekub
Rozbalit Rozbalit vše Re: Lazarus - time
Odpovědět | | Sbalit | Link | Blokovat | Admin
to vas nezarazilo ze se to lisi presne od 12 hodin (AM/PM)?
[jk@ws ~]$ date +%X
20:20:11
[jk@ws ~]$ export LC_TIME="en_US"
[jk@ws ~]$ date +%X
08:20:34 PM
man locale
25.11.2016 20:26 jekub
Rozbalit Rozbalit vše Re: Lazarus - time
o 12 hodin, pardon
25.11.2016 21:13 Mi-Ki
Rozbalit Rozbalit vše Re: Lazarus - time
No toho jsem si všim.

Takto je to ok Label1.caption:=datetostr(ZVDateTimePicker1.Date);

Poradte prosím jak to uložit aby to bylo ok.

S linuxem nemam žadne zkušeností.:(
26.11.2016 20:45 jekub
Rozbalit Rozbalit vše Re: Lazarus - time
Nemate nastavene nejake amerikanske prostredi?

1) pustte terminal

2) aktualni cas je...
[jk@ws ~]$ date +%X
20:35:02
Pokud je to OK, tak bude asi problem v Lazaru (neznam). Pokud vystup vypada jako L, vypiste si aktualni nastaveni LC_TIME
[jk@ws ~]$ locale | grep LC_TIME
LC_TIME="cs_CZ.utf8"
Pokud neodpovida (predpokladam sk), nastavte
[jk@ws ~]$ export LC_TIME="sk_SK"
a spustte vas program (z tohoto terminalu).
Blaazen avatar 25.11.2016 23:07 Blaazen | skóre: 24 | blog: BL
Rozbalit Rozbalit vše Re: Lazarus - time
Odpovědět | | Sbalit | Link | Blokovat | Admin
Otestoval jsem tu komponentu (verze 1.4 z roku 2012 staženou z https://sourceforge.net/projects/lazarus-ccr/files/Time%20and%20Date/ZVDateTimeControls%20Pack/ ) a asi je tam chyba, nebo to špatně používám.

Nemohu totiž nastavit čas např. 20:50:00 ani v Object Inspectoru, hodnota Time se hned přepíše na 08:50:00, ale na Formu se zobrazí správně. Když změním TimeFormat z tf24 na tf12 tak se na Formu zobrazí 08:50:00 PM - taky správně. Komponenta vnitřně ten nastavený čas zná.
Možná je v tom nějaký trik, nebo existuje novější verze. Taky bych se poptal na Lazarus fóru, tam jsou tyhle komponenty známé.
26.11.2016 09:02 Mi-Ki
Rozbalit Rozbalit vše Re: Lazarus - time
JJ. Je to cele nějak pokokocene.

Take problem.

DataFile.WriteString('Other','ZVDateTimePicker1',TimeToStr(ZVDateTimePicker1.time));

A problem už je uo.

Label1.caption := TimeToStr(ZVDateTimePicker2.time);

Neviš o nějake jine, funkční komponentě, na nastavení času?
Blaazen avatar 26.11.2016 12:06 Blaazen | skóre: 24 | blog: BL
Rozbalit Rozbalit vše Re: Lazarus - time
Jedině standartní TTimeEdit (na Misc paletě). A zjistil jsem, že TZVDateTimePicker se teď jmenuje TDateTimePicker a je už součástí Lazara, ty balíčky na SoureForge jsou už neudržované. Ale má to ten stejný problém.
26.11.2016 19:24 Mi-Ki
Rozbalit Rozbalit vše Re: Lazarus - time
Problem nebude v komponentě ale v linuxu.

Label1.Caption:= TimeToStr(time);

A s 19:21:05 mame 07:21:05

Ini.WriteTime('Test', 'time', time);

A s 19:21:05 mame time=07:21:05

Poradite, ked je problem?
Řešení 1× (1john2)
Blaazen avatar 26.11.2016 21:07 Blaazen | skóre: 24 | blog: BL
Rozbalit Rozbalit vše Re: Lazarus - time
Už jsem to vypátral. Normálně se všechny formáty (datum, čas, měna) zobrazují nějakým výchozím způsobem. Když je potřeba převzít nastavení ze systému, musí se někam do uses přidat jednotka clocale. To právě balíček DateTimeCtrls s komponentou DateTimePicker dělá sám.
Stačí přidat někam do kódu:
FormatSettings.LongTimeFormat:='hh:nn:ss';
a bude to vždy ve 24-hodinovém formátu, a nebo
FormatSettings.LongTimeFormat:='hh:nn:ss ampm'; FormatSettings.TimePMString:='AM'; FormatSettings.TimePMString:='PM';
a bude to 12-hodinový formát s příponou AM nebo PM.

Nakonec to vypadá, že vlastně nikde chyba není, prostě to takhle u nás v Čechách je zavedeno.
27.11.2016 13:41 Mi-Ki
Rozbalit Rozbalit vše Re: Lazarus - time
Děkují moooooooc.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.