All files / lib date.js

100% Statements 63/63
100% Branches 32/32
100% Functions 8/8
100% Lines 63/63

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172        1x 1x               1x 90x 90x 3x     90x         90x 90x 90x   90x                   1x 89x 89x 2x     89x         89x 89x 89x   89x                   1x 87x 87x   87x   87x                   1x 179x 179x 1x     179x         179x 179x 179x   179x                   1x 88x 88x 1x     88x         88x 88x 88x   88x                 1x 92x   92x 92x 3x   92x 2x     92x   92x                 1x 92x   92x 92x 3x   92x 2x     92x   92x     1x       1x  
/**
 *
 * @namespace faker.date
 */
var _Date = function (faker) {
  var self = this;
  /**
   * past
   *
   * @method faker.date.past
   * @param {number} years
   * @param {date} refDate
   */
  self.past = function (years, refDate) {
      var date = new Date();
      if (typeof refDate !== "undefined") {
          date = new Date(Date.parse(refDate));
      }
 
      var range = {
        min: 1000,
        max: (years || 1) * 365 * 24 * 3600 * 1000
      };
 
      var past = date.getTime();
      past -= faker.random.number(range); // some time from now to N years ago, in milliseconds
      date.setTime(past);
 
      return date;
  };
 
  /**
   * future
   *
   * @method faker.date.future
   * @param {number} years
   * @param {date} refDate
   */
  self.future = function (years, refDate) {
      var date = new Date();
      if (typeof refDate !== "undefined") {
          date = new Date(Date.parse(refDate));
      }
 
      var range = {
        min: 1000,
        max: (years || 1) * 365 * 24 * 3600 * 1000
      };
 
      var future = date.getTime();
      future += faker.random.number(range); // some time from now to N years later, in milliseconds
      date.setTime(future);
 
      return date;
  };
 
  /**
   * between
   *
   * @method faker.date.between
   * @param {date} from
   * @param {date} to
   */
  self.between = function (from, to) {
      var fromMilli = Date.parse(from);
      var dateOffset = faker.random.number(Date.parse(to) - fromMilli);
 
      var newDate = new Date(fromMilli + dateOffset);
 
      return newDate;
  };
 
  /**
   * recent
   *
   * @method faker.date.recent
   * @param {number} days
   * @param {date} refDate
   */
  self.recent = function (days, refDate) {
      var date = new Date();
      if (typeof refDate !== "undefined") {
          date = new Date(Date.parse(refDate));
      }
 
      var range = {
        min: 1000,
        max: (days || 1) * 24 * 3600 * 1000
      };
 
      var future = date.getTime();
      future -= faker.random.number(range); // some time from now to N days ago, in milliseconds
      date.setTime(future);
 
      return date;
  };
 
  /**
   * soon
   *
   * @method faker.date.soon
   * @param {number} days
   * @param {date} refDate
   */
  self.soon = function (days, refDate) {
      var date = new Date();
      if (typeof refDate !== "undefined") {
          date = new Date(Date.parse(refDate));
      }
 
      var range = {
        min: 1000,
        max: (days || 1) * 24 * 3600 * 1000
      };
 
      var future = date.getTime();
      future += faker.random.number(range); // some time from now to N days later, in milliseconds
      date.setTime(future);
 
      return date;
  };
 
  /**
   * month
   *
   * @method faker.date.month
   * @param {object} options
   */
  self.month = function (options) {
      options = options || {};
 
      var type = 'wide';
      if (options.abbr) {
          type = 'abbr';
      }
      if (options.context && typeof faker.definitions.date.month[type + '_context'] !== 'undefined') {
          type += '_context';
      }
 
      var source = faker.definitions.date.month[type];
 
      return faker.random.arrayElement(source);
  };
 
  /**
   * weekday
   *
   * @param {object} options
   * @method faker.date.weekday
   */
  self.weekday = function (options) {
      options = options || {};
 
      var type = 'wide';
      if (options.abbr) {
          type = 'abbr';
      }
      if (options.context && typeof faker.definitions.date.weekday[type + '_context'] !== 'undefined') {
          type += '_context';
      }
 
      var source = faker.definitions.date.weekday[type];
 
      return faker.random.arrayElement(source);
  };
 
  return self;
 
};
 
module['exports'] = _Date;