Practical Perl wrote: > Hello,lists, Hello,
> Please see these two lines' output: > > [$ perl -Mstrict -MTime::Local -le 'print timelocal(0,0,0,31,8,2006)' > Day '31' out of range 1..30 at -e line 1 > > $ perl -Mstrict -MTime::Local -le 'print timelocal(0,0,0,31,7,2006)' > 1156953600 > > > I translate the time of '2006-7-31 00:00:00' to unix timestamp,it's > successful. > But when I translate the time of '2006-8-31 00:00:00' to unix timestamp,it > said '31 out of range'. > I'm so faint that August doesn't have 31th day?Please tell me why this > happen and how to resolve it. localtime EXPR Converts a time as returned by the time function to a 9-element list with the time analyzed for the local time zone. Typically used as follows: # 0 1 2 3 4 5 6 7 8 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); All list elements are numeric, and come straight out of the C ‘struct tm’. $sec, $min, and $hour are the seconds, minutes, and hours of the specified time. $mday is the day of the month, and $mon is the month itself, in the range 0..11 with 0 indicating January and 11 indicating December. $year is the number of years since 1900. That is, $year is 123 in year 2023. $wday is the day of the week, with 0 indicating Sunday and 3 indicating Wednesday. $yday is the day of the year, in the range 0..364 (or 0..365 in leap years.) $isdst is true if the specified time occurs during daylight savings time, false otherwise. So if you want to translate 31 August 2006 you have to subtract one from the month and 1900 from the year: $ perl -Mstrict -MTime::Local -le 'print timelocal(0,0,0,31,7,106)' 1157007600 John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>