Jump to content

brianlaughlan

New Members
  • Posts

    7
  • Joined

  • Last visited

    Never

Everything posted by brianlaughlan

  1. oops... I only had to pass in some default date paramaters and use the same names in the short and now it works. Thanks for your help PFMaBiSmAd, much appreciated. Use this shortcode in WP... [daterange s_date=15 July 2012" e_date="17 July 2013] function date_range($params = array()){ extract(shortcode_atts(array( 's_date' => '1 January 2012', 'e_date' => '2 January 2012', ), $params)); list($s_day,$s_month,$s_year) = sscanf($s_date, "%d %s %d"); list($e_day,$e_month,$e_year) = sscanf($e_date, "%d %s %d"); if($s_year == $e_year){ // same year, either 1st or 2nd form if($s_month == $e_month){ // same year, same month, 1st form - DAY. - DAY. MONTH YEAR return "$s_day. - $e_day. $e_month $e_year"; } else { // same year, different month, 2nd form - DAY. MONTH - DAY. MONTH YEAR return "$s_day. $s_month - $e_day. $e_month $e_year"; } } else { // different year - 3rd form - DAY. MONTH YEAR - DAY. MONTH YEAR return "$s_day. $s_month $s_year - $e_day. $e_month $e_year"; } } add_shortcode('daterange', 'date_range');
  2. OK so.. I have got as far as below. I am using this as my shortcode in the post: [daterange start=15 July 2012" end="17 July 2013] but I am only getting the dots and dashes outputted >>>> . - . It must be something stupid I am missing? or... I have completly done it the wrong way? function date_range($params = array()){ list($s_day,$s_month,$s_year) = sscanf($s_date, "%d %s %d"); list($e_day,$e_month,$e_year) = sscanf($e_date, "%d %s %d"); extract(shortcode_atts(array( 's_date' => 'start', 'e_date' => 'end', ), $params)); if($s_year == $e_year){ // same year, either 1st or 2nd form if($s_month == $e_month){ // same year, same month, 1st form - DAY. - DAY. MONTH YEAR return "$s_day. - $e_day. $e_month $e_year"; } else { // same year, different month, 2nd form - DAY. MONTH - DAY. MONTH YEAR return "$s_day. $s_month - $e_day. $e_month $e_year"; } } else { // different year - 3rd form - DAY. MONTH YEAR - DAY. MONTH YEAR return "$s_day. $s_month $s_year - $e_day. $e_month $e_year"; } } add_shortcode('daterange', 'date_range');
  3. That is absolutely... stunning. Thank you for your help. Now I am gonna attempt to turn this into a Wordpress Shortcode.
  4. Also, any help I can get for turning this now into a wordpress shortcode would be amazing!!
  5. OK, so as I said, I am just a beginner, the best way I could figure out how to do this was to use IF statements and work my way backwards starting with an initail check to see if it is the exact same date. If it wasnt I then check the year, if its the same year I then check the month. If its not the same year I output the full set of dates. Any advice on how I could tidy this up and make less code would be great? I added some HTML in to show messages on what is happening. Any ideas? <?php $startDate = new DateTime(); $endDate = new DateTime(); $startDate->setDate(2012, 03, 25); $endDate->setDate(2012, 03, 26); if ( $startDate == $endDate ) { $message = "Exactly the same Date"; $joinDates = $startDate->format('j').". ".$endDate->format('F')." ".$endDate->format('Y'); } else { if ( $startDate->format('Y') == $endDate->format('Y')) { if ( $startDate->format('F') == $endDate->format('F')) { $message = "Not same day, Same year and month"; $joinDates = $startDate->format('j').". - ".$endDate->format('j').". ".$endDate->format('F')." ".$endDate->format('Y'); } else { $message = "Not same day, Same Year NOT Month"; $joinDates = $startDate->format('j').". ".$startDate->format('M')." - ".$endDate->format('j').". ".$endDate->format('M')." ".$endDate->format('Y'); } } else { $message = "Not same day, NOT Same Year OR same month"; $joinDates = $startDate->format('j').". ".$startDate->format('M')." ".$startDate->format('Y')." - ".$endDate->format('j').". ".$endDate->format('M')." ".$endDate->format('Y'); } } //Some HTML below to show the dates... ?> <br /> <h1><?php echo $joinDates; ?></h1> <h3><?php echo $message; ?></h3><br /> Start Date: <b><?php echo $startDate->format('j F Y'); ?></b><br /> The start month is <b><?php echo $startDate->format('F'); ?></b><br /> The start year is <b><?php echo $startDate->format('Y'); ?></b><br /> <br /> End Date: <b><?php echo $endDate->format('j F Y'); ?></b><br /> The end month is <b><?php echo $endDate->format('F'); ?></b><br /> The end year is <b><?php echo $endDate->format('Y'); ?></b><br />
  6. I am using wordpress and I have created two custom fields on a custom post type "Course" - where the user can select a start date and an end date when creating a post or in this case "course". My idea was to create a WordPress Shortcode that allows me to input these two variables and it will call the function and output the combined string. Before I create the shortcode though, I need to figure out the function and get it working on its own. Any advice on the structure of such a function, or any "things to think of" would be much appreciated. - Brian
  7. Hello Everyone, This is my first post. I would really love your input on this. I need a function that will allow me to take two dates and turn it into a date range. It must understand if the range splits into seperate months or even years. and there must be a "-" as a seperator. Examples... Range within same month: "15 July 2012" as a start date and "17 July 2012" as an end date then the output will be "15. - 17 July 2012" (DAY. - DAY. MONTH YEAR) Range spills over 2 Months: "30 July 2012" as a start date and "1st August 2012" as an end date then the output will be "30. July - 1. August 2012" (DAY. MONTH - DAY. MONTH YEAR) Range spills over 2 Years: "30 December 2012" as a start date and "1st January 2013" as an end date then the output will be "30. December 2012 - 1. January 2013" (DAY. MONTH YEAR - DAY. MONTH YEAR) I guess I need to run it through some sort of validation first to figure out what range type from above to use and then do the output. I am still pretty basic at PHP so I would love to just leave this open and see what feeback you guys can offer. Thanks in advance, Brian.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.