Převod sekund na datum

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
AstroMiK
Příspěvky: 649
Registrován: 08 pro 2017, 19:05

Převod sekund na datum

Příspěvek od AstroMiK » 08 pro 2017, 19:15

Zdravím.

Je možné na Arduinu nějak jednoduše převést počet sekund, které uběhly od 1.1.2000, na nějaký "čitelný" textový řetězec, ve kterém by byl vidět datum a čas?
Pro jednoduchost mi nezáleží ani přechodech SEČ/SELČ a už vůbec ne na nějakých přestupných sekundách.


Příklad:
Na začátku mám číslo 566072104 (to je počet sekund od 1.1.2000 00:00:00) a potřeboval bych z toho získat "8.12.2017 18:15:04".

Třeba v Excelu je to jednoduché (obrázek níže), ale já bych to potřeboval v Arduinu.
sekundy.gif

Uživatelský avatar
SkullKeep
Příspěvky: 313
Registrován: 23 srp 2017, 18:51
Bydliště: Brno
Kontaktovat uživatele:

Re: Převod sekund na datum

Příspěvek od SkullKeep » 08 pro 2017, 19:58

No na netu jsme našel jen vzorec:

Kód: Vybrat vše

  int sekundy = 0, minuty = 0, hodiny = 0, dny = 0, zadana_hodnota = 176400;//v sekundach

  sekundy = zadana_hodnota % 60;
  zadana_hodnota /= 60;
  minuty = zadana_hodnota % 60;
  zadana_hodnota /= 60;
  hodiny = zadana_hodnota % 24;
  dny = zadana_hodnota / 24;
  
snad ti to pomůže a zbytek nějak doděláš. ;)
:twisted: :?: :arrow: :geek: P. Q. M.

AstroMiK
Příspěvky: 649
Registrován: 08 pro 2017, 19:05

Re: Převod sekund na datum

Příspěvek od AstroMiK » 08 pro 2017, 20:21

Hodiny, minuty a sekundy jsou to nejjednodušší, protože trvají pořád stejně dlouho.

Největší problém je ale s dny v měsíci, měsíci a roky - protože každý měsíc je jinak dlouhý a občas se vyskytuje i přestupný rok.
To je to, s čím nějak nemůžu hnout.

Ale dík za snahu...

petan
Příspěvky: 358
Registrován: 23 črc 2017, 10:19
Kontaktovat uživatele:

Re: Převod sekund na datum

Příspěvek od petan » 08 pro 2017, 22:10

Zkus toto: https://www.pjrc.com/teensy/td_libs_Time.html

Akorát to je od 1.1.1970, takže si tam budeš muset přičíst offset.

AstroMiK
Příspěvky: 649
Registrován: 08 pro 2017, 19:05

Re: Převod sekund na datum

Příspěvek od AstroMiK » 09 pro 2017, 00:03

S tou knihovnou se mi to zdá nějaký moc složitý.

Zkusil jsem to vymyslet trochu jednoduššeji.
V příloze je program, který by měl převádět počet dní od 1.1.2000 na datum.
(Čas už pak nebude problém doplnit - viz příspěvky vše.)

Ale zatím mi to nějak nefunguje.
Mám tam testovací smyčku, která do prodprogramu posílá čísla od 1 do 2000 a očekávám, že se v sériovém monitoru budou zobrazovat datumy od 1.1.2000 až do 23.6.2005 (to je 2000 dní).
Program pracuje správně až do konce roku 2003, ale pak se zblázní a místo 1.1.2004 pokračuje dál 32.12.2003, 33.12.2003, ...... až do 569.12.2003.
Ještě tam je nějaká chyba, ale myslím, že tudy vede cesta.
dmr.ino
(3.31 KiB) Staženo 231 x

AstroMiK
Příspěvky: 649
Registrován: 08 pro 2017, 19:05

Re: Převod sekund na datum

Příspěvek od AstroMiK » 09 pro 2017, 01:25

Tak už jsem na to přišel.

Chyba v předchozím příspěvku byla ve špatně nadeklarovaném poli (stačilo zvětšit pole ze 48 prvků na 49).
Funkční program pro převod ze sekund na datum a čas dávám do přílohy.
dmr.ino
(4.04 KiB) Staženo 323 x

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 0 hostů