UNPKG

2.92 kBJavaScriptView Raw
1/**
2 *
3 * @namespace faker.date
4 */
5var _Date = function (faker) {
6 var self = this;
7 /**
8 * past
9 *
10 * @method faker.date.past
11 * @param {number} years
12 * @param {date} refDate
13 */
14 self.past = function (years, refDate) {
15 var date = (refDate) ? new Date(Date.parse(refDate)) : new Date();
16 var range = {
17 min: 1000,
18 max: (years || 1) * 365 * 24 * 3600 * 1000
19 };
20
21 var past = date.getTime();
22 past -= faker.random.number(range); // some time from now to N years ago, in milliseconds
23 date.setTime(past);
24
25 return date;
26 };
27
28 /**
29 * future
30 *
31 * @method faker.date.future
32 * @param {number} years
33 * @param {date} refDate
34 */
35 self.future = function (years, refDate) {
36 var date = (refDate) ? new Date(Date.parse(refDate)) : new Date();
37 var range = {
38 min: 1000,
39 max: (years || 1) * 365 * 24 * 3600 * 1000
40 };
41
42 var future = date.getTime();
43 future += faker.random.number(range); // some time from now to N years later, in milliseconds
44 date.setTime(future);
45
46 return date;
47 };
48
49 /**
50 * between
51 *
52 * @method faker.date.between
53 * @param {date} from
54 * @param {date} to
55 */
56 self.between = function (from, to) {
57 var fromMilli = Date.parse(from);
58 var dateOffset = faker.random.number(Date.parse(to) - fromMilli);
59
60 var newDate = new Date(fromMilli + dateOffset);
61
62 return newDate;
63 };
64
65 /**
66 * recent
67 *
68 * @method faker.date.recent
69 * @param {number} days
70 */
71 self.recent = function (days) {
72 var date = new Date();
73 var range = {
74 min: 1000,
75 max: (days || 1) * 24 * 3600 * 1000
76 };
77
78 var future = date.getTime();
79 future -= faker.random.number(range); // some time from now to N days ago, in milliseconds
80 date.setTime(future);
81
82 return date;
83 };
84
85 /**
86 * month
87 *
88 * @method faker.date.month
89 * @param {object} options
90 */
91 self.month = function (options) {
92 options = options || {};
93
94 var type = 'wide';
95 if (options.abbr) {
96 type = 'abbr';
97 }
98 if (options.context && typeof faker.definitions.date.month[type + '_context'] !== 'undefined') {
99 type += '_context';
100 }
101
102 var source = faker.definitions.date.month[type];
103
104 return faker.random.arrayElement(source);
105 };
106
107 /**
108 * weekday
109 *
110 * @param {object} options
111 * @method faker.date.weekday
112 */
113 self.weekday = function (options) {
114 options = options || {};
115
116 var type = 'wide';
117 if (options.abbr) {
118 type = 'abbr';
119 }
120 if (options.context && typeof faker.definitions.date.weekday[type + '_context'] !== 'undefined') {
121 type += '_context';
122 }
123
124 var source = faker.definitions.date.weekday[type];
125
126 return faker.random.arrayElement(source);
127 };
128
129 return self;
130
131};
132
133module['exports'] = _Date;
\No newline at end of file