Autor Wątek:  Poszukiwany algorytm  (Przeczytany 2520 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline El Mecánico

  • Wiadomości: 1067
  • Dawniej El Driver
    • Zobacz profil
    • Stowarzyszenie POLARIS - OPP
  • Otrzymane polubienia: 2
Poszukiwany algorytm
« dnia: 23 Maja 2012, 19:28:21 »
Googlam od zeszłego tygodnia w poszukiwaniu algorytmu przeliczania daty na format Unix. Wiem, są w bibliotekach programistycznych gotowe metody, sęk w tym, że nie znalazłem implementacji w C, tylko deklaracje nagłówkowe. Jeśli ktoś zna ten algorytm (ma gdzieś zanotowany), to bardzo serdecznie proszę o podzielenie się:)
www.polaris.org.pl
www.ciemneniebo.pl
MaSzyna_LD w trakcie tworzenia...

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6306
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 336
Odp: Poszukiwany algorytm
« Odpowiedź #1 dnia: 23 Maja 2012, 19:33:46 »
Zobacz to:
http://pl.wikipedia.org/wiki/Data_julia%C5%84ska

Potem trzeba jeszcze odjąć stałą.
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline El Mecánico

  • Wiadomości: 1067
  • Dawniej El Driver
    • Zobacz profil
    • Stowarzyszenie POLARIS - OPP
  • Otrzymane polubienia: 2
Odp: Poszukiwany algorytm
« Odpowiedź #2 dnia: 23 Maja 2012, 19:39:14 »
Tylko (M)JD jest z częścią ułamkową, na AVR'ku będzie się to liczyło baaardzo długo (brak sprzętowego FPU).
www.polaris.org.pl
www.ciemneniebo.pl
MaSzyna_LD w trakcie tworzenia...

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6306
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 336
Odp: Poszukiwany algorytm
« Odpowiedź #3 dnia: 23 Maja 2012, 19:43:06 »
Marudzisz. EU07.EXE nie korzysta z FPU, a jakoś działa. To są dosyć proste obliczenia.

R: Rok
M: Miesiąc
D: Dzień
JD: Dni Juliańskie

X = (M + 9) / 12
A = 4716 + R + Int(X)
Y = 275 * M / 9
V = 7 * A / 4
B = 1729279,5 + 367 * R + Int(Y) – Int(V) + D
Q = (A + 83) / 100
C = Int(Q)
W = 3 * (C + 1) / 4
E = Int(W)
JD = B + 38 – E

Int(x) – Odcina część ułamkową z liczby x np. int(4,87) = 4
Nie musisz dodawać 1729279.5, za to trzeba będzie wyznaczyć stałą dla daty Unixowej (albo poszukać).
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline El Mecánico

  • Wiadomości: 1067
  • Dawniej El Driver
    • Zobacz profil
    • Stowarzyszenie POLARIS - OPP
  • Otrzymane polubienia: 2
Odp: Poszukiwany algorytm
« Odpowiedź #4 dnia: 23 Maja 2012, 19:46:17 »
Tylko MaSzyna chodzi na wielopotokowych procesorach pracujących z częstotliwościami ponad pół GHz, a ja mam procek jednopotokowy taktowany 20MHz max;]
www.polaris.org.pl
www.ciemneniebo.pl
MaSzyna_LD w trakcie tworzenia...

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6306
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 336
Odp: Poszukiwany algorytm
« Odpowiedź #5 dnia: 23 Maja 2012, 19:50:21 »
Nadal twierdzę, że marudzisz. Zaczynałem od komputerów z zegarem 3.5MHz i problemów z liczeniem nie było. Kod, który wkleiłem nie wymaga nawet używania ułamków.
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni