in reply to Re^2: Human Readable Date
in thread Human Readable Date
Here's the problem, and you get credit for discovering what I believe to be a bug in Date::Manip (or its documentation).
The documentation for Date::Manip correctly states that ParseDateString() will not correctly handle a raw number of seconds since epoch. Obviously, seconds since epoch is exactly what $s->mtime() is giving you. So you need a way of getting Date::Manip's ParseDateString() to recognize that what you're handing it is seconds since epoch.
The POD for Date::Manip goes on to tell you how to do that:
NOTE: One of the most frequently asked questions that I have gotten is how to parse seconds since the epoch. ParseDateString cannot simply parse a number as the seconds since the epoch (it conflicts with some ISO-8601 date formats). There are two ways to get this information. First, you can do the following:
$secs = ... # seconds since Jan 1, 1970 00:00:00 GMT $date = &DateCalc("Jan 1, 1970 00:00:00 GMT",$secs);Second, you can call it directly as:
$date = &ParseDateString("epoch $secs");
You're attempting to use the second method, and at least for me on Win32 ActivePerl 5.8.6 with Date::Manip version 5.42, that second method simply doesn't work as advertised. It fails to convince Date::Manip that you've handed it a string of seconds since epoch, and the result is that ParseDateString doesn't know what it's looking at, and defaults to returning an empty string.
I have gone on to confirm that at least the first method suggested in the documentation for Date::Manip does work. That is,
printf "%s: Age [%s], size[%d]\n", $farm, DateCalc( "Jan 1, 1970 00:00:00 GMT",$s->mtime() ), $s->size();
Try that on for size. ;)
Update: Bug alert has been rescinded. See my followup below.
Dave
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: Human Readable Date
by FireyIce01 (Novice) on Jan 18, 2005 at 06:06 UTC | |
by davido (Cardinal) on Jan 18, 2005 at 06:18 UTC | |
by FireyIce01 (Novice) on Jan 18, 2005 at 06:35 UTC |