Gå til innhold

[Løst]mktime problem for gammel dato


Anbefalte innlegg

kjører opensuse 11.2, apache og php

 

følgende kode

<?php

$dagen = mktime(0, 0, 0, 1, 1, 1855);

echo date('Y-m-d',$dagen);

?>

gir resultatet 1855-01-01 på min maskin

 

ved overføring av koden til min ISP som også kjører Linux blir resultatet 1970-01-01

 

Noen som kan forklare hvordan jeg skal få ønsket resultat på ISP-serveren

Lenke til kommentar
Videoannonse
Annonse

Tja, en timestamp verdi er antall sekunder siden 1970. Så, om en timestamp verdi skal behandle år før 1970 så vil det bli en negativ verdi, noe som ikke er støttet før PHP 5.1.

 

Mao, enten så må du endre koden så du ikke bruker timestamp, eller du må benytte en ISP som har PHP 5.1 eller nyere.

Lenke til kommentar
Tja, en timestamp verdi er antall sekunder siden 1970. Så, om en timestamp verdi skal behandle år før 1970 så vil det bli en negativ verdi, noe som ikke er støttet før PHP 5.1.

 

Mao, enten så må du endre koden så du ikke bruker timestamp, eller du må benytte en ISP som har PHP 5.1 eller nyere.

 

ISP server bruker PHP version 5.2.9

Lenke til kommentar

Kanskje en ide å lese hva manualen har å si om date?

Hentet fra «changelog»-delen

The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).
Lenke til kommentar
Er det et negativ verdi du får i fra funksjonen på serveren?

 

Har endret koden slik

<?php

$dagen = mktime(0, 0, 0, 1, 1, 1855);

echo date('Y-m-d',$dagen)."<br />";

echo date($dagen);

?>

 

på min maskin er resultatet:

1855-01-01

-3629062800

 

På serveren :

1970-01-01

 

 

 

Kanskje en ide å lese hva manualen har å si om date?

Hentet fra «changelog»-delen

The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).

 

Det merkelige er jo at det fungerer på min maskin

Lenke til kommentar
Kanskje en ide å lese hva manualen har å si om date?

Hentet fra «changelog»-delen

The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).

 

Det merkelige er jo at det fungerer på min maskin

Er det mulig at du kjører 64bit lokalt og serveren 32bit?

Lenke til kommentar
Kanskje en ide å lese hva manualen har å si om date?

Hentet fra «changelog»-delen

The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).

 

Det merkelige er jo at det fungerer på min maskin

Er det mulig at du kjører 64bit lokalt og serveren 32bit?

Server kjører 32 bit får jeg vite. Vil søke å flytte over på 64 om mulig. Skal gi tilbakemelding om dette løser problemet

Lenke til kommentar
Kanskje en ide å lese hva manualen har å si om date?

Hentet fra «changelog»-delen

The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).

 

Det merkelige er jo at det fungerer på min maskin

Er det mulig at du kjører 64bit lokalt og serveren 32bit?

Server kjører 32 bit får jeg vite. Vil søke å flytte over på 64 om mulig. Skal gi tilbakemelding om dette løser problemet

 

ISP har ikke 64 bit maskiner så jeg må bytte. Noen som har tips om rimelig og seriøs leverandør?

Lenke til kommentar
Tror jeg heller ville vurdert en annen løsning. Hva er det som gjør at du trenger en så gammel dato og/eller må ha det som en timestamp?

 

Dette skal brukes i forbindelse med slektsforskning og trenger å vite ukedag og dato tilbake til 1500-tallet.

Foreløbig løsning er å generere disse dataene på min maskin og lagre dette i en database som overføres til server. Men vil på sikt skaffe meg en ISP som leverer 64 bits server.

 

Anser saken for løst nå.

Takk for alle innspill

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...