Toon posts:

[php] strftime met negative timestamp

Pagina: 1
Acties:

Verwijderd

Topicstarter
is het niet toegestaan om een timestamp met een negatieve waarde door te geven aan strftime?

ik gebruik de volgende functie in mijn site:
PHP:
1
2
3
4
5
6
7
8
9
10
function formatDate($thisdate, $size) {
    setlocale("LC_ALL", "dutch");
    if ($size=="short") {
        $thisdate = strftime("%d-%m-%Y", $thisdate);
    } else {
        $thisdate = strftime("%A %d %B %Y", $thisdate);
    }

    return $thisdate;
}


wanneer ik een negatieve waarde doorgeef, krijg ik een lege string terug.
iemand een idee?

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Met een negatieve waarde bedoel je dus een datum voor 1 januari 1970?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
precies.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

volgens mij mogen timestamps niet negatief zijn :P Wil je eend atum voor 1970 dan moet je geen timestamp gebruiken ( oig geen unix timestamps).

Verwijderd

Topicstarter
de timestamp maak ik ook in php zelf aangemaakt:

$geboortedatum = mktime(0,0,0,$MGeboortedatum,$DGeboortedatum,$YGeboortedatum);

dus php komt er zelf mee...

  • Frenzy
  • Registratie: November 1999
  • Laatst online: 22-12-2025
bosmonster, da's onzin. Een integer kan zowel negatieve getallen als positieve getalen bevatten. 0 seconden als timestamp = 01.01.1970, negatieve seconden moet dus onder de 1970 zitten.

  • Frenzy
  • Registratie: November 1999
  • Laatst online: 22-12-2025
probeer je $thisdate parameter eens goed te parsen. m.a.w. maak er voor je 'm gebruikt in de strftime functie een echte integer van. iets als

$thisdate = strftime("%d-%m-%Y", intval($thisdate));

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

misschien is dit een verklaring ?
behaviour of unix timestamp functions for dates
before 1.1.1970 is simply undefined and depends
on the system *and* c library implementation you
use

so stay away from undefined value ranges :)
gevonden via de mktime user comments...

[ Voor 0% gewijzigd door TheRookie op 06-11-2002 11:51 . Reden: quote added ]


  • Frenzy
  • Registratie: November 1999
  • Laatst online: 22-12-2025
die comments gelden alleen voor win2k

Verwijderd

Topicstarter
ook intval gebruiken werkt helaas niet. ook niet bij gewoon harde waarde

print strftime("%d-%m-%Y", intval(-360000));

  • Frenzy
  • Registratie: November 1999
  • Laatst online: 22-12-2025
vervang je strftime eens door date, dus zo:

code:
1
2
3
4
5
6
7
8
9
function formatDate($thisdate, $size) { 
    setlocale("LC_ALL", "dutch"); 
    if ($size=="short") { 
        $thisdate = date("%d-%m-%Y", $thisdate); 
    } else { 
        $thisdate = date("%A %d %B %Y", $thisdate); 
    }               
    return $thisdate; 
}

  • Frenzy
  • Registratie: November 1999
  • Laatst online: 22-12-2025
op windows kan die 'date' functie sowieso niet onder de 1970, maar wellicht vind *nix het wel fijn.

  • Frenzy
  • Registratie: November 1999
  • Laatst online: 22-12-2025
owja en geen % voor de formats

Verwijderd

Topicstarter
yep. zo gaat het goed. alleen moeten nu de procenttekens weg.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Frenzy schreef op 06 november 2002 @ 11:45:
bosmonster, da's onzin. Een integer kan zowel negatieve getallen als positieve getalen bevatten. 0 seconden als timestamp = 01.01.1970, negatieve seconden moet dus onder de 1970 zitten.


Dat een integer ook signed negatief kan zijn snap ik ook wel, maar of date() of andere datum-functies van php het ook logisch vindt dat een negatieve timestamp voor 1970 is weet ik niet.
Pagina: 1