How to create a Views custom exposed filter with predefined range of date values (today, next 15 days, next month)
I've written a custom module exactly for this purpose but haven't released it as it ended up being a little less abstracted than I'd like. 

The way you do it is by writing a Views filter handler (which is surprisingly easy). Without giving the whole game away and leaving a little homework for you: please read on. Let me know how you go.

You'll need a line in your .info file.

files[] = inc/views_relative_date_filters.inc


Register it with the Views API in the .module file.

/**
 * Implements hook_veiws_api().
 */
function views_relative_date_filters_views_api() {
  return array(
    'api' =&gt; 2,
    'path' =&gt; drupal_get_path('module', 'views_relative_date_filters') . '/inc'
  );
}


Register the Views handlers inc/views_relative_date_filters.views.inc

function views_relative_date_filters_views_handlers() {
  return array(
  // ...
  );
}

function views_relative_date_filters_views_data() {
  $data = array();
  // ...
  return $data;
}


And finally write the filter itself in inc/views_relative_date_filters.inc

class views_relative_date_filters extends views_handler_filter {
  // You'll need an options form (just use the parent)
  function options_form(&amp;$form, &amp;$form_state) {
    parent::options_form($form, $form_state);
  }

  // You can use a views_form or an
  function exposed_form(&amp;$form, &amp;$form_state) {
    // Return a Form API select element
    // ... all, this-day, this-fornight, this-month
  }

  // The query to get your results based on your time period
  function query() {
    $this-&gt;ensure_my_table();

    // Get the value of the submitted filter
    if (isset($this-&gt;value[0])) {
      $value = $this-&gt;value[0];
    } else {
      $value = 'all';
    }

    // A switch on the $value
    switch( $value ) {
      case 'all';
        return;
      case 'this-month':
        // Modify your query with where conditions, groups, joins, whatever
        // ...
        break;
      case 'this-fortnight':
        // Modify your query with where conditions, groups, joins, whatever
        // ...
        break;
      case 'this-day':
        // ...
        break;
      case default;
        break;
    }
  }
}