|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-01-24 00:19 UTC] emetsger at jhu dot edu
calling date("m-d-y H:m:s", $timestamp) doesn't always produce the correct system date.
The linked page and source demonstrate this problem.
The date is gathered from three different sources on the system: the date command, the date within mysql, and the php time() function call.
The three different sources all produce identical timestamps. However, when I call the date() function with the above timestamp, the system date will not match the formatted date returned by date().
I saw this problem orginally in my 4.0.6 install, and just upgraded to 4.1.1 and my test page still exhibits the same behavior.
The page is located at: http://esm.mse.jhu.edu/cms/test/testdate.php
The source is at:
http://esm.mse.jhu.edu/cms/test/testdate.phps
My phpinfo page is at:
http://esm.mse.jhu.edu/cms/test/index.php
Thanks for taking a look!
Elliot Metsger
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Nov 07 15:00:01 2025 UTC |
Addionally, I've descovered that when PHP gets a timestamp from a UNIX file that was created/modified on the first day of any month ( use ls -al from the command line to verify the actual date modified), PHP returns the mday (in the case of getdate()), or "d" (in the case of date()) as being the last day of the PREVIOUS month + 1 day, instead of returning 1, which is the actual day of modification/creation. It doesn't even try to claim it's day 0. It just invents an imaginary day for the previous month and returns that. It also gets the "m" (date()), or 'mon' and 'month' (getdate()) values wrong, returning them as those of the previous month. Try using date("m - d", $timestamp_from_unix_file); if you don't believe me. BTW, the $timestamp_from_unix_file in the example above, actually has to be FROM a REAL unix file, not a PHP generated unix timestamp. Use filemtime($filename) to get it.Sorry, but I couldn't reproduce this on my 5.8 system. I did touch -am -t 200203011200 timestamp.dat timestamp.php is <pre> <?php $timestamp = filemtime( "timestamp.dat" ); var_dump( $timestamp ); var_dump( date( "Y.m.d" , $timestamp ) ); var_dump( getdate( $timestamp ) ); ?> </pre> output is int(1014980400) string(10) "2002.03.01" array(11) { ["seconds"]=> int(0) ["minutes"]=> int(0) ["hours"]=> int(12) ["mday"]=> int(1) ["wday"]=> int(5) ["mon"]=> int(3) ["year"]=> int(2002) ["yday"]=> int(59) ["weekday"]=> string(6) "Friday" ["month"]=> string(5) "March" [0]=> int(1014980400) } so, everything looks ok by me. As I'm still not able to see your code, are you _sure_ that you're not making any errors?In this function you use the month as minutes. Try this: date("m-d-y H:i:s", $timestamp) Harry van de Hoef Nijvink Automatisering http://www.nijvink.nlyou are foolish!!! date("m-d-y H:m:s") is a error! should be date("m-d-y H:i:s")!!!!