Salve qualcuno sa come si convertono i secondi contenuti nella variabile $a in anni e quello che rimane in giorni?
Salve qualcuno sa come si convertono i secondi contenuti nella variabile $a in anni e quello che rimane in giorni?
più o meno dovrebbe essere così:
in un anno ci sono:
60 sec * 60 min * 24 h *365.25 gg // (0.25gg tiene conto di 1 anno bisest. ogni 4)
$an = floor( $a / (60 * 60 * 24 * 365.25));
// secondi rimanenti
$a = $a - $an * (60 * 60 * 24 * 365.25)
// giorni
$g = floor( $a / (60 * 60 * 24));
forse ci sono istruzioni ottimizzate...
ok
0.25 = 1/4
se hai un numero elevatissimo di secondi corrispondenti a molti anni, tanti da comprendere più anni bisestili li consideri tutti uguali a 365.25, l'anno bistestile viene suddiviso tra i quattro anni.
E' chiaro che si compie un errore non sapendo l'anno di partenza, ma era un termine non compreso nel problema.
Se non ricordo male esistono ulteriori regole sugli anni bisestili nel senso che i millenni sono esclusi (ma posso sbagliarmi o forse era qualche altra eccezione).
mentre per convertire i secondi totali prima in mesi e poi sempre i secondi totali in settimane
Sempre per lo stesso motivo che non si conosce il periodo iniziale
mediamente un mese contiene 365.25 / 12 = 30.4375 giorni
$mesi = floor( $a / (60 * 60 * 24 * 30.4375));
la settimana contiene sempre 7 giorni indipendentemente dal resto
$mesi = floor( $a / (60 * 60 * 24 * 7));
le ho scritte di botto, ma dovrebbe essere così.
SE&O
ottimo
google da un mese = 30,4368499 giorni
che si fa?
Avrà ragione lui...
il suo numero è più basso del mio, quindi ci sono anni considerati bisestili che in realtà non lo sono, mi sembra siano proprio i millenni (ma vado a memoria).
i secolari non sono bisestili, a meno che siano divisibili per 400.Originariamente inviato da vitren54
Avrà ragione lui...
il suo numero è più basso del mio, quindi ci sono anni considerati bisestili che in realtà non lo sono, mi sembra siano proprio i millenni (ma vado a memoria).
Il 2000 ad esempio era divisibile per 100, ma era lo stesso bisestile perché divisibile per 400.
In base alle eccezioni suggerite il valore si avvicina ulteriormente anche se non coincide del tutto.Originariamente inviato da l'evangelista
i secolari non sono bisestili, a meno che siano divisibili per 400.
Il 2000 ad esempio era divisibile per 100, ma era lo stesso bisestile perché divisibile per 400..
Il calcolo va rapportato al millennio:
in base ai giorni medi annui un millennio corrisponde a 365.250 gg
a questi togliamo i giorni nel millennio non bisestili conteggiati erroneamente (es dall'anno 1000 al 2000) anno 1000-1100-1300-1400-1500-1700-1800-1900 per un totale di 8 gg
per cui il calcolo diventa non 365.250 / 12.000 mesi ma 365.242 / 12.000 = 30,4368333
e questa volta il valore è lievemente più basso di quello di Google.
Ma, sempre se non ricordo male, il tempo di rivoluzione è di 365 gg più qualcosa (ore forse minuti) che andrebbero a compensare la differenza con il preciso calcolo di Google.