onlyican Posted February 5, 2008 Share Posted February 5, 2008 Hey all. I am building a script, and I need to get the date of MONDAY for a week (Anywhere from MOnday to Sunday) This is what i come up with, which works. Just interested to know if there are any other methods.. function GetMondayDateForWork($DB, $user, $Date){ $DateDay = date("D", $Date); $OneDay = 60*60*24; $MondayDate = false; switch($DateDay){ case "Mon": $MondayDate = $Date; break; case "Tue": echo "Here!"; $MondayDate = $Date - $OneDay; break; case "Wed": $MondayDate = $Date - ($OneDay * 2); break; case "Thu": $MondayDate = $Date - ($OneDay * 3); break; case "Fri": $MondayDate = $Date - ($OneDay * 4); break; case "Sat": $MondayDate = $Date - ($OneDay * 5); break; case "Sun": $MondayDate = $Date - ($OneDay * 6); break; } return $MondayDate; } Quote Link to comment https://forums.phpfreaks.com/topic/89554-get-monday-date-of-x-date/ Share on other sites More sharing options...
haku Posted February 5, 2008 Share Posted February 5, 2008 current_date - ((date('w',$date) - 1)*60*60*24) substitute 'current_date' for a unix timestamp (use mkdate() to create one if necessary) for the date for which you want to find the Monday date. Quote Link to comment https://forums.phpfreaks.com/topic/89554-get-monday-date-of-x-date/#findComment-458746 Share on other sites More sharing options...
Psycho Posted February 5, 2008 Share Posted February 5, 2008 current_date - ((date('w',$date) - 1)*60*60*24) substitute 'current_date' for a unix timestamp (use mkdate() to create one if necessary) for the date for which you want to find the Monday date. I think you forgot to change one of your variable names. "current_date" shoudl be the same variable as $date within the formula: <?php function GetMondayDateForWork($date){ return ($date - ((date('w',$date)-1)*60*60*24)); } ?> Quote Link to comment https://forums.phpfreaks.com/topic/89554-get-monday-date-of-x-date/#findComment-458781 Share on other sites More sharing options...
datafan Posted February 5, 2008 Share Posted February 5, 2008 <?php //getday.php function $current_date = mktime(); //todays epoch date $day_wanted = 1; //0,1,2,3,4,5,6 Sun - Sat You could build a form to make this dynamic function GetWeekday($current_date, $day_wanted) { $current_day = date('w', $current_date); //get todays day of the week 0-6 $adjustment = $day_wanted - $current_day; //get how many days to difference $day_adjustment = $adjustment * 86400; //create a positive or negative number reflecting the seconds between today and the weekday you wanted $new_date = $current_date + $day_adjustment; //add the negitive or positive number to the current epoch date return $chosen_day = date('l dS \of F Y', $new_date); } echo GetWeekday($current_date, $day_wanted); ?> Quote Link to comment https://forums.phpfreaks.com/topic/89554-get-monday-date-of-x-date/#findComment-458960 Share on other sites More sharing options...
datafan Posted February 5, 2008 Share Posted February 5, 2008 We mere mortals pound out half a page of code to do something and then someone on here shows you how to do it with half a line. Quote Link to comment https://forums.phpfreaks.com/topic/89554-get-monday-date-of-x-date/#findComment-458969 Share on other sites More sharing options...
Psycho Posted February 5, 2008 Share Posted February 5, 2008 We mere mortals pound out half a page of code to do something and then someone on here shows you how to do it with half a line. Although your solution was not as eloquent, it made up for it in being more flexible. That was a great idea to make it variable for the DOW that you are trying to find. I have updated my one-liner to take advantage of that and added it to my library: <?php //############################################## // // Function: GetDOWDate($date, $dow) // // Description: // This funtion takes a date (timestamp) and // a DOW (day of week 0-6) and returns the // timestamp for the DOW in the input date // // Parameters: // - date: Timestamp for the source date // - dow: The Day of Week to return // //############################################## function GetDOWDate($date, $dow){ return ($date - ((date('w',$date)-$dow)*60*60*24)); } $currentDate = mktime(); //Today's date $DOWtoReturn = 2; //(0-6, Sun-Sat) echo date('l, m-d-Y', GetDOWDate($currentDate, $DOWtoReturn)); ?> Quote Link to comment https://forums.phpfreaks.com/topic/89554-get-monday-date-of-x-date/#findComment-459002 Share on other sites More sharing options...
Barand Posted February 5, 2008 Share Posted February 5, 2008 I use this, so it works for Sunday too <?php function Monday($date) { $d = (date('w', $date) + 6) % 7; return date ('d M Y', strtotime("-$d days", $date)); } ?> to test it <?php $dt = mktime(0,0,0,2,4,2008); for ($i=0; $i<10; $i++) { echo date ('D d M y', $dt), ' ------- Week start: ', Monday($dt), '<br>'; $dt = strtotime("+1 days", $dt); } Quote Link to comment https://forums.phpfreaks.com/topic/89554-get-monday-date-of-x-date/#findComment-459042 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.