Avatar billede macho Praktikant
15. september 2006 - 01:43 Der er 13 kommentarer og
1 løsning

Problemer med jdtogregorian

Jeg har en php, hvori jeg kalnder nogle data frem  på baggrund af en dato. Til dette formål har jeg brugt jdtogregorian, som du kan se herunder, og det har indtil nu virket fortrinligt. Problemet er nu bare, at jeg får følgende fejlmeddelelse, når jeg forsøger at gå ind på min side:

Fatal error: Call to undefined function: gregoriantojd()....... on
line 68

Nedenstående kode starter på linje 34

Hvad dælen kan der være galt???

Det er et kæmpe problem, som jeg bare SKAL have løst, derfor de høje pts.


$julianDate = $row['startDate'];
if(!empty($julianDate)) { 
        $gregorianDate=jdtogregorian($julianDate);
        $splitdate=explode("/",$gregorianDate); 
        $minMaaned=$splitdate[0];
        $minDato=$splitdate[1];
        $mitAar=$splitdate[2];

}

$starttid = $row['startTime'];
$starttid = explode(":",$starttid);

$starttimer=$starttid[0];
$startminutter=$starttid[1];
$startsekunder=$starttid[2];


$sluttid = $row['endTime'];
$sluttid = explode(":",$sluttid);

$sluttimer=$sluttid[0];
$slutminutter=$sluttid[1];
$slutsekunder=$sluttid[2];


?>
Avatar billede coderdk Praktikant
15. september 2006 - 09:16 #1
I den kode du lister har du slet ikke et kald til gregoriantojd()...

Prøv lige i toppen at lave en:

phpinfo(INFO_MODULES);exit;

og led efter "calendar" - Er den der? Hvis ikke, så mangler du den for at kunne bruge kalenderfunktionerne... ;-D
Avatar billede macho Praktikant
15. september 2006 - 11:59 #2
Det har jeg så lige prøvet og "calendar" er der ikke. Det undrer mig bare gevaldigt, at mine sider har fungeret upåklageligt i snart et år (jeg bruger jdtogregorian på flere sider) og det først er nu, at der kommer problemer. Grunden til min undren er selvfølgelig, at jeg IKKE har ændret på indholdet af pågældende sider, før fejlen opstod!

??
Avatar billede coderdk Praktikant
15. september 2006 - 12:29 #3
Det lyder underligt - Ingen af dem burde virke, hvis ikke calendar er compilet med i PHP... :)
Avatar billede macho Praktikant
15. september 2006 - 12:43 #4
Ja, det har du ret i! Er det monstro noget, som du kan hjælpe mig videre med?
Avatar billede coderdk Praktikant
15. september 2006 - 12:54 #5
Det ved jeg ikke :) Har du kontrol over serveren? Kan du re-compile PHP? Det eneste du skal er, at tilføje --enable-calendar til din ./configure
Avatar billede macho Praktikant
15. september 2006 - 13:34 #6
Nej, jeg har problemet på 2 hjemmesider, som begge ligger hos Surftown.dk. Deres server har jeg desværre ikke kontrol over! Måske man kan foreligge problemet hos Surftown...?? Hhmmm....
Avatar billede coderdk Praktikant
15. september 2006 - 13:45 #7
Det skader ikke at prøve at kontakte dem :) Ellers må du prøve at finde nogle PHP-implementeringer af de to funktioner - Der er nogle julian til gregorian i kommentarerne på php.net: http://dk.php.net/jdtogregorian
Avatar billede macho Praktikant
15. september 2006 - 14:33 #8
Mener du, at jeg kan prøve at implementere f.eks. denne funktion:

QUOTE

function unix_to_greg($unix_timestamp) {
  $julian = floor(((($unix_timestamp / "60") / "60") / "24") + "2440588");
  $julian = $julian - 1721119;
  $calc1 = 4 * $julian - 1;
  $year = floor($calc1 / 146097);
  $julian = floor($calc1 - 146097 * $year);
  $day = floor($julian / 4);
  $calc2 = 4 * $day + 3;
  $julian = floor($calc2 / 1461);
  $day = $calc2 - 1461 * $julian;
  $day = floor(($day + 4) / 4);
  $calc3 = 5 * $day - 3;
  $month = floor($calc3 / 153);
  $day = $calc3 - 153 * $month;
  $day = floor(($day + 5) / 5);
  $year = 100 * $year + $julian;
 
  if ($month < 10)
  {
      $month = $month + 3;
  }else{
      $month = $month - 9;
      $year = $year + 1;
  }
  return "$day.$month.$year";
}

UNQUOTE

for at få det til at virke?
Avatar billede coderdk Praktikant
15. september 2006 - 14:34 #9
F.eks. ja :)
Avatar billede coderdk Praktikant
15. september 2006 - 14:35 #10
Eller det må vel være:

function jd_to_greg($julian) {
  $julian = $julian - 1721119;
  $calc1 = 4 * $julian - 1;
  $year = floor($calc1 / 146097);
  $julian = floor($calc1 - 146097 * $year);
  $day = floor($julian / 4);
  $calc2 = 4 * $day + 3;
  $julian = floor($calc2 / 1461);
  $day = $calc2 - 1461 * $julian;
  $day = floor(($day + 4) / 4);
  $calc3 = 5 * $day - 3;
  $month = floor($calc3 / 153);
  $day = $calc3 - 153 * $month;
  $day = floor(($day + 5) / 5);
  $year = 100 * $year + $julian;
 
  if ($month < 10) {
      $month = $month + 3;
  }
  else {
      $month = $month - 9;
      $year = $year + 1;
  }
  if ($day < 10) {
  $day = "0".$day;
  }
  if ($month < 10) {
  $month = "0".$month;
  }
  return $day."/".$month."/".$year;
}

Hvis du skal konvertere en JD til Gregorian...
Avatar billede coderdk Praktikant
15. september 2006 - 14:36 #11
Evt:

if ( !function_exists("jdtogregorian") )
{
function jdtogregorian($julian) {
  $julian = $julian - 1721119;
  $calc1 = 4 * $julian - 1;
  $year = floor($calc1 / 146097);
  $julian = floor($calc1 - 146097 * $year);
  $day = floor($julian / 4);
  $calc2 = 4 * $day + 3;
  $julian = floor($calc2 / 1461);
  $day = $calc2 - 1461 * $julian;
  $day = floor(($day + 4) / 4);
  $calc3 = 5 * $day - 3;
  $month = floor($calc3 / 153);
  $day = $calc3 - 153 * $month;
  $day = floor(($day + 5) / 5);
  $year = 100 * $year + $julian;
 
  if ($month < 10) {
      $month = $month + 3;
  }
  else {
      $month = $month - 9;
      $year = $year + 1;
  }
  if ($day < 10) {
  $day = "0".$day;
  }
  if ($month < 10) {
  $month = "0".$month;
  }
  return $day."/".$month."/".$year;
}
}
Avatar billede macho Praktikant
15. september 2006 - 15:16 #12
Jeg er nødt til at prøve det i næste uge - takker foreløbig for hjælpen, men vender tilbage!!
Avatar billede macho Praktikant
18. september 2006 - 12:29 #13
-> coderdk
det virker helt fint nu, efter jeg fik tilføjet den funktion på mine sider!
Mange tak for hjælpen - gi' mig et svar, så får du dine pts... ;-)
Avatar billede coderdk Praktikant
18. september 2006 - 12:57 #14
Yessir :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester