Register FAQ / Rules Forum Spy Search Today's Posts Mark Forums Read
Go Back   MacRumors Forums > Special Interests > Visual Media > Web Design and Development

Reply
 
Thread Tools Search this Thread Display Modes
Old Oct 22, 2012, 07:25 PM   #1
jacob.3336
macrumors newbie
 
Join Date: Jul 2012
PHP Time Of Day

I am making a web application.

One thing is needs to do is get the time of day
so it can say for example in the evening:

"Good Evening, User"

I have tried an if statement:

PHP Code:
function timeofday(){

if (
$Time <= "5:00 PM") {
return 
"Evening";
}else{

if (
$Time <= "12:00 PM") {
return 
"Afternoon";
}else{

if (
$Time <= "5:00 AM") {
return 
"Morning";
}
}

It doesn't work.
Does anybody know how I could make it work.
jacob.3336 is offline   1 Reply With Quote
Old Oct 22, 2012, 08:54 PM   #2
Darth.Titan
macrumors 68020
 
Darth.Titan's Avatar
 
Join Date: Oct 2007
  • You're not setting a value for $time.
  • You're using comparison operators on string values. i.e. "5:00 PM" is a string value.

Think 24-hour clock time:
PHP Code:
function timeofday(){ 
    
$time date('G');
    
    if (
$time 12) { 
        return 
"Morning"
    }
    elseif (
$time >= 12 && $time 17) { 
        return 
"Afternoon"
    }
    else{ 
        return 
"Evening"
    } 

Info on PHP's built in date() function. Bear in mind that date() will reflect the time on the server where your site is hosted, not necessarily the same as your visitors' local times. Getting the visitors' local time will require either asking them to enter their timezone, or obtaining it through javascript.

Also your if/else reasoning seemed overcomplicated, so I went with if, elseif, else instead.
Darth.Titan is offline   0 Reply With Quote
Old Oct 23, 2012, 12:44 PM   #3
SrWebDeveloper
macrumors 68000
 
SrWebDeveloper's Avatar
 
Join Date: Dec 2007
Location: Alexandria, VA, USA
 
see vendor information in user profile
For client side Javascript (local browser time):

Code:
<script type="text/javascript">
var d = new Date()
var time = d.getHours()
if (time<10)
  {
  document.write("<b>Good morning</b>");
  }
else if (time>10 && time<16)
  {
  document.write("<b>Good afternoon</b>");
  }
else
  {
  document.write("<b>Good evening</b>");
  }
</script>
Couple of additional thoughts to the OP, with all due respect to Darth.Titan who responded perfectly:

Please note that some users have no control over their current time zone, so none of these things are fool proof. But the JS method, being client side, is certainly the way to go unless you know all your users are from one centralized time zone location where you can adjust based on the offset in the PHP code.

If this really matters to you consider allowing users to select their time zone offset from GMT either in a preference pane or during login, saved to their account. Then you use the PHP method with that offset being calculated, no reliance on Javascript and very accurate time control as it's server based.
__________________
Jim Goldbloom
Sr. Web Developer, owner GoldTechPro, LLC
http://www.GoldTechPro.com
SrWebDeveloper is offline   0 Reply With Quote
Old Nov 8, 2012, 01:17 PM   #4
Moshu
macrumors newbie
 
Join Date: May 2012
Quote:
Originally Posted by SrWebDeveloper View Post
For client side Javascript (local browser time):

Code:
<script type="text/javascript">
var d = new Date()
var time = d.getHours()
if (time<10)
  {
  document.write("<b>Good morning</b>");
  }
else if (time>10 && time<16)
  {
  document.write("<b>Good afternoon</b>");
  }
else
  {
  document.write("<b>Good evening</b>");
  }
</script>
Browsing the forums, couldn't help notice a small bug in your code: when 10 AM, the script will display: "Good evening"

Replace with

else if (time>=10 && time<16)

The tip to use JavaScript due to TimeZones is a very good one.

I would also add that personally, I prefer to offload as much work as possible to the browsers (by JavaScript), in order to reduce server load (PHP). Consider how many people are using your website in the same time, when choosing to code certain processes in JavaScript or PHP.

Obviously, this is not the case with this script, but nevertheless, I consider it an important thing to keep in mind when building a website.

Cheers!
__________________
iPhone 4s 16GB iPad mini WiFi 16GB 2012 13" MacBook Air i5 4GB 256 GB 2011 Airport Extreme 2012 Airport Express

Last edited by Moshu; Nov 8, 2012 at 01:24 PM.
Moshu is offline   0 Reply With Quote
Old Nov 9, 2012, 03:40 AM   #5
SrWebDeveloper
macrumors 68000
 
SrWebDeveloper's Avatar
 
Join Date: Dec 2007
Location: Alexandria, VA, USA
 
see vendor information in user profile
Thanks for the fix, it was not intended to be a copy/paste of code for the OP, just an untested example and I should have said so. As to your other comments, just a small note to add. As sites become more dynamic and complex and Unix timestamps are stored along with offsets into databases used for online calendars, events, forum postings like this, etc., server side processing is intensive anyway. Client side date stuff can also be generated and seeded by PHP in such situations and is an effective method. Otherwise I agree entirely with what you said about client side in general.
__________________
Jim Goldbloom
Sr. Web Developer, owner GoldTechPro, LLC
http://www.GoldTechPro.com
SrWebDeveloper is offline   0 Reply With Quote

Reply
MacRumors Forums > Special Interests > Visual Media > Web Design and Development

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -5. The time now is 07:51 AM.

Mac Rumors | Mac | iPhone | iPhone Game Reviews | iPhone Apps

Mobile Version | Fixed | Fluid | Fluid HD
Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.

Privacy / DMCA contact / Affiliate and FTC Disclosure
Copyright 2002-2013, MacRumors.com, LLC