Working with time and dates
In this lesson, we will try to look at the many different options for working with time and dates in PHP. We went through some very simple examples in the previous lesson mostly to show you what PHP is. In this lesson, we will take a closer look at the date function.
Time and date functions
PHP provides a wide range of funtions in relation to time and date. In this lesson, we will look at the most important of these functions: date.
With different parameters, the date function can return the current date / time in many different formats. Some of the most useful parameters are:
- date("y")
- Returns the current year from a date - like: 18
- date("m")
- Returns the current month from a date - like: 06
- date("n")
- Returns the current month from a date without leading zeroes ( eg. "1" instead of "01") - like: 6
- date("F")
- Returns the current month name from a date - like: June
- date("d")
- Returns the current day of the month from a date - like: 18
- date("l")
- Returns the name of the current weekday from a date - like: Thursday
- date("w")
- Returns the current day of the week from a date - like: 3
- date("H")
- Returns the current hour from a time - like: 10
- date("i")
- Returns the current minute from a time - like: 29
- date("s")
- Returns the current second from a time - like: 52
This example illustrates the use of the date function:
<html> <head> <title>Time and date in PHP</title> </head> <body> <?php echo "<p>Today it's " . date("l") . "</p>"; ?> </body> </html>
The time is 1434616474
And now hold on... because now it becomes a little nerdy! The function time() returns the current time as the number of seconds since January 1, 1970, 12:00 PM, GMT.
<html> <head> <title>time and date</title> </head> <body> <?php echo "<p>It's been exactly " . time() . " seconds since January 1, 1970, 12:00 PM, GMT </ p> "; ?> </body> </html>
Time expressed in the number of seconds since January 1, 1970, 12:00 PM GMT is a so-called "timestamp" (UNIX timestamp) and is quite useful when you work with dates/times in the future or the past.
By default, the date function uses the current timestamp (i.e. the current value of time(). But with an extra parameter you can specify a different time stamp and thus work with the future or the past. In the example below, we set the timestamp to 0 seconds from January 1, 1970 12:00 PM, GMT. Thereby we can check what day of week January 1, 1970 was.
<html> <head> <title>time and date</title> </head> <body> <?php echo "<p>January 1, 1970 was a " . date("l",0) . "</p>"; ?> </body> </html>
Unless you are a mathematical genius, it quickly becomes complicated to count the number of seconds since January 1, 1970 to a specific time in the future or past. But here you can get help from another nifty function: mktime, which does the calculations for you.
The syntax for mktime is (hour, minute, second, month, day, year). The example below converts the time of the first step on the Moon (July 21, 1969, 02:56):
<html> <head> <title>time and date</title> </head> <body> <?php echo mktime (2,56,0,7,21,1969); ?> </body> </html>
Notice that it's returning a negative number as the date is earlier than January 1, 1970.
We can now put this together with the date function and find out which weekday this historic day took place.
<html> <head> <title>time and date</title> </head> <body> <?php echo date("l", mktime(2,56,0,7,21,1969)); ?> </body> </html>
What can you use it for?
All this may seem a bit theoretical at this stage. After all, what on earth can you use a function like time() for? More importantly, when will you learn something you can actually use on your pages?
The answer is that what you learn here are building blocks - the only limitations to what you can build are your creativity and imagination! I would venture to say that you have already learned more than you think. For example, do you think you can make a website with different background images each day of the week and that works in all browsers?
Sure you can! Look at this example:
<html>
<head>
<title>time and date</title>
</head>
<body background="background_<?php echo date("w"); ?>.png">
</body>
</html>
The example above, with a dynamic background image, simply requires that you make seven images and name them background_1.png, background_2.png, background_3.png, etc.
If a user then enters your site on a Tuesday, the site will have background_2.png as background, and the next day, background_3.png. Easy and simple!
In the next lesson, you will be introduced to new building blocks that can be used to make loops and repetitions in your codes.
PHP is fun, don't you think?
0 comments:
Post a Comment
We’re eager to see your comment. However, Please Keep in mind that comments are moderated manually by our human reviewers according to our comment policy, and all the links are nofollow. Using Keywords in the name field area is forbidden. Let’s enjoy a personal and evocative conversation.