Oui le machin à Kotaro marche bien, c'est à dire au moins pour des dates pas trop éloignées de la date actuelle...
Ça repose - si je peux me permettre - sur une interpolation linéaire qui donne la date grâce au coefficient secondes atysiennes/secondes réelles (appelé BDT dans le script de Kotaro) et un repère facile (tick 0 <=> 30 Pluvia, 4e CA 2524, 00h00).
C'est à dire que ça marche bien, tant qu'on n'éteint pas le serveur, puisque les dates atysiennes évoluent paralèllement à son uptime.
Donc ce script ne marche pas sur de longues durées, plus particulièrement avant la reprise (oct 2008). Il faudrait donc au lieu d'une interpolation en établir plusieurs grâce à des dates repère, et sélectionner la bonne en fonction de la date choisie... Ce qui devrait donner un résultat acceptable en-dehors des périodes de serveurs éteints. Avec des données de dates précises comme repère, ça peut faire des très bons résultats.
En tout cas sans toute cette usine à gaz j'ai transformé un peu le script de Kotaro pour en faire des fonctions utilisables en PHP, histoire de pouvoir utiliser ça sur le site de tout un chacun, et ça donne ça :
http://lucjaulmes.free.fr/calendrier_php
Qui peut s'utiliser comme on veut...
Code: Select all
<?php
include('calendrier.php');
function temps_restant_saison()
{
// On veut savoir le mois actuel (1 à 12)
$mois = atysdate('n');
// On en déduit le prochain changement de saison
while(++$mois % 3 != 1);
// NB le mois n°13 a bien un sens pour atystime
$changement = atystime(1,$mois);
$restant = $changement - time();
echo 'Il reste ',floor($restant/(24*3600)) ,'j ', floor(($restant/3600)%24),'h ',floor(($restant/60)%60),'m ',($restant%60),'s irl avant la prochaine saison ('.constant('SAISON_'.floor(($mois%12)/3)).').';
// exemple : Il reste 2j 0h 19m 50s irl avant la prochaine saison (Été).
}
$params = 'd,D,j,l,S,w,z,F,m,M,n,t,C,k,K,Y,y,a,A,g,G,h,H,i,s';
$test = array_combine( explode(',',$params), explode(',',atysdate($params)) );
echo '<p>On est à cet instant le ' .$test['l'],', ',$test['F'],' ',$test['j'], ', ', $test['C'], 'e CA ', $test['Y'], ', il est ', $test['H'], ':', $test['i'], ':', $test['s'], ' et la saison est le ',$test['K'],'.</p>';
// exemple : On est à cet instant le Holeth, Germinally 18, 2e CA 2545, il est 10:11:46 et la saison est le Printemps.
?>