Setting a greeting based on user's time (Good morning, good afternoon…)

Viewed 48517

Can anyone extrapolate on how to implement a basic "good evening" or "good morning" based on the user's time setting?

Perhaps PHP will fetch the server time, but I'm looking to greet the site visitor with a time-based appropriate greeting that considers their time of day.

E.G.: good morning, good night, good afternoon.

6 Answers

Base it on .getHours() of the date object. Using javascript's Date object will automatically use the user's local time, rather than the server-time:

var now = new Date();
alert( now.getHours() );

A couple conditional checks, and you're in business. For instance, the following is a very simple and easy-to-understand example:

var now = new Date();
var hrs = now.getHours();
var msg = "";

if (hrs >  0) msg = "Mornin' Sunshine!"; // REALLY early
if (hrs >  6) msg = "Good morning";      // After 6am
if (hrs > 12) msg = "Good afternoon";    // After 12pm
if (hrs > 17) msg = "Good evening";      // After 5pm
if (hrs > 22) msg = "Go to bed!";        // After 10pm

alert(msg);

It's currently 2:56am here, so I see "Mornin' Sunshine!" when I run this. You can test your own local time with this online demo: http://jsbin.com/aguyo3/edit

$hour      = date('H');

if ($hour >= 20) {
    $greetings = "Good Night";
} elseif ($hour > 17) {
   $greetings = "Good Evening";
} elseif ($hour > 11) {
    $greetings = "Good Afternoon";
} elseif ($hour < 12) {
   $greetings = "Good Morning";
}
echo $greetings;
const now = new Date().getHours();

switch (true) {
    case (now<=12): console.log("Good Morning");break;
    case (now>12 && now<16): console.log("Good Afternnon");break;
    case (now>=16 && now<20): console.log("Good Evening");break;
    case (now>=20 && now<=24): console.log("Good Night");break;}

This code is based on JavaScript, Hope this will help you.

function greeting_msg() {
    $hour = date('H');
    if ($hour >= 18) {
       $greeting = "Good Evening";
    } elseif ($hour >= 12) {
        $greeting = "Good Afternoon";
    } elseif ($hour < 12) {
       $greeting = "Good Morning";
    }
    return $greeting;
}
Related