Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
For 2023 (and 2024 ...) - we are now fully retired from IT training.
We have made many, many friends over 25 years of teaching about Python, Tcl, Perl, PHP, Lua, Java, C and C++ - and MySQL, Linux and Solaris/SunOS too. Our training notes are now very much out of date, but due to upward compatability most of our examples remain operational and even relevant ad you are welcome to make us if them "as seen" and at your own risk.

Lisa and I (Graham) now live in what was our training centre in Melksham - happy to meet with former delegates here - but do check ahead before coming round. We are far from inactive - rather, enjoying the times that we are retired but still healthy enough in mind and body to be active!

I am also active in many other area and still look after a lot of web sites - you can find an index ((here))
Time conversions in Perl

Time isn't the easiest unit on which to do arithmetic, and dates expressed as a human-readable string are quite tricky to sort. Just imagine trying to write a program to work out whether 9 p.m. Pacific time on 28th Feb was before or after 3 a.m. in the UK on 1st March. And did you realise that, sorted alphabetically, the week starts on Friday and ends on Wednesday in England ... and it starts on Sunday and ends on Friday in France.

In Perl, all is neatly and elegantly solved for you ... you simply work in seconds from 1st January 1970, and use
localtime to convert from seconds into hour, minute, second, day, month, year
timelocal to convert the other way (from 6 values into a single number of seconds)

In order to use localtime, you need to use the Time::Local module which is supplied as standard with Perl anyway, although localtime is always available without pulling any extra module in.

gmtime and timegm provide Greenwich Mean Time convertors rather than convertors for your local time zone, and localtime and gmtime in a scalar context will give you a string rather than a list of numbers - so that makes output formatting very easy.

A final piece in the puzzle ... if you stat a file, the list you get back includes the times that the file was accessed, modified and changed each in seconds from 1.1.1970 - giving use an easy way to compare file stamps, or file ages versus some other timed happening.

Like to see an example?

use Time::Local;

# get the current time (seconds from 1.1.1970)

$now = time();

# in LIST context, localtime returns a list of each part of the time
# second, minute, hour, day, month, year, weekday, yearday, dst

# in SCALAR context, localtime returns string

@lpart = localtime($now);
$spart = localtime($now);
print "$spart ... @lpart ...\n";

# Work out the timestamp for a year ago ...

$past = timelocal(@lpart);

# and see if a file is over a year old ...

($finfo) = (stat("/etc/hosts"))[9];
($finfo < $past) ?
print "File is over a year old\n":
print "File is recent\n";

(written 2005-10-02, updated 2006-06-05)

Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
P216 - Perl - Handling Dates and Time
  [239] What and why for the epoch - (2005-03-08)
  [765] Perl - turning seconds into days, hours, minutes and seconds - (2006-06-17)

Back to
Commenting Perl regular expressions
Previous and next
Horse's mouth home
Forward to
A Stengthening day
Some other Articles
Final courses of '05 coming up ....
Do the work and take the risk - a PHP contract to avoid
Laying out a vegetarian lunch
A Stengthening day
Time conversions in Perl
Commenting Perl regular expressions
Is enough enough?
Accessing a page via POST from within a PHP script
Wheelchair access - can do!
Matching in MySQL
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page

This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2024: 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/454_Time ... -Perl.html • PAGE BUILT: Sun Oct 11 16:07:41 2020 • BUILD SYSTEM: JelliaJamb