Skip to content

Combine From and To Dates if the Same Day #19

@mkinnan

Description

@mkinnan

If you have this displayed:

From: Thu, 7 April 2016 - 1:25 am
To: Thu, 7 April 2016 - 3:55 pm

and want it to look like this for the same day:

Thu, 7 April 2016 - 1:25 am to 3:55 pm

change this in the function date_field_formatter_view in date.js:

  $.each(items, function(delta, item) {
    var value2_present = typeof item.value2 !== 'undefined' ? true: false;
    var label = value2_present ? 'From: ' : '';
    var d = date_prepare(item.value);
    element[delta] = {
      markup: '<div class="value">' + label + date(format, d.getTime()) + '</div>'
    };
    if (value2_present) {
      var d2 = date_prepare(item.value2);
      element[delta].markup += '<div class="value2">To: ' + date(format, d2.getTime()) + '</div>';
    }
  });

to this quick hack:

  $.each(items, function(delta, item) {

    // prepare date formats
    var format_full = 'D, j F Y - g:i a';
    var format_day = 'D, j F Y';
    var format_time = 'g:i a';

    // prepare 'From:' date value
    var d = date_prepare(item.value);

    // check to see if there is a 'To:' date
    var value2_present = typeof item.value2 !== 'undefined' ? true: false;

    if (value2_present) {

      // prepare 'To:' date value
      var d2 = date_prepare(item.value2);

      var from_day = date(format_day, d.getTime());
      var to_day = date(format_day, d2.getTime());

      // get hour for 'To:' date
      var to_hour = date('g', d2.getTime());

      // correct the 0 hour to 12 for 12pm
      if (to_hour == '0') {
        var to_time = '12' + date(':i a', d2.getTime());;
      } else {
        var to_time = date(format_time, d2.getTime());
      }

      if (from_day == to_day) {

        element[delta] = {
          markup: '<div class="value">' + date(format_full, d.getTime()) + ' to ' + to_time + '</div>'
        };

      } else {

        var label = value2_present ? 'From: ' : '';
        element[delta] = {
          markup: '<div class="value">' + label + date(format_full, d.getTime()) + '</div>'
        };
        element[delta].markup += '<div class="value2">To: ' + date(format_full, d2.getTime()) + '</div>';

      }

    } else {
      element[delta] = {
        markup: '<div class="value">' + label + date(format_full, d.getTime()) + '</div>'
      };
    }

  });

You can change these lines to create different formats:

var format_full = 'D, j F Y - g:i a';
var format_day = 'D, j F Y';
var format_time = 'g:i a';

Here is a link to different formats:
http://www.w3schools.com/php/func_date_date.asp

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions