aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLeyla Jähnig <[email protected]>2022-03-25 09:02:10 +0100
committerGitHub <[email protected]>2022-03-25 09:02:10 +0100
commitc1c60649ee554f81887ab618ae8b2e2bd5a27d55 (patch)
tree5f70fa6cfe1c1a27b8f19921db4e3b6e0d5a8819 /src
parent7635dc9a63b24b681f88d4029573d0caf8e652b5 (diff)
downloadfaker-c1c60649ee554f81887ab618ae8b2e2bd5a27d55.tar.xz
faker-c1c60649ee554f81887ab618ae8b2e2bd5a27d55.zip
refactor: date accept number input (#670)
Diffstat (limited to 'src')
-rw-r--r--src/date.ts47
1 files changed, 20 insertions, 27 deletions
diff --git a/src/date.ts b/src/date.ts
index 6c9b9100..4a8e7827 100644
--- a/src/date.ts
+++ b/src/date.ts
@@ -2,29 +2,18 @@ import type { Faker } from '.';
import type { DateEntryDefinition } from './definitions';
/**
- * Converts date passed as a string or Date to a Date object. If nothing passed, takes current date.
+ * Converts date passed as a string, number or Date to a Date object.
+ * If nothing or a non parseable value is passed, takes current date.
*
* @param date Date
*/
-function toDate(date?: string | Date): Date {
- if (date != null) {
- return new Date(date instanceof Date ? date : Date.parse(date));
+function toDate(date?: string | Date | number): Date {
+ date = new Date(date);
+ if (isNaN(date.valueOf())) {
+ date = new Date();
}
- return new Date();
-}
-
-/**
- * Converts date passed as a string or Date to milliseconds. If nothing passed, takes current date.
- *
- * @param date Date
- */
-function toMilliseconds(date?: string | Date): number {
- if (date != null) {
- return date instanceof Date ? date.getTime() : Date.parse(date);
- }
-
- return new Date().getTime();
+ return date;
}
/**
@@ -54,7 +43,7 @@ export class _Date {
* faker.date.past(10) // '2017-10-25T21:34:19.488Z'
* faker.date.past(10, '2020-01-01T00:00:00.000Z') // '2017-08-18T02:59:12.350Z'
*/
- past(years?: number, refDate?: string | Date): Date {
+ past(years?: number, refDate?: string | Date | number): Date {
const date = toDate(refDate);
const range = {
min: 1000,
@@ -81,7 +70,7 @@ export class _Date {
* faker.date.future(10) // '2030-11-23T09:38:28.710Z'
* faker.date.future(10, '2020-01-01T00:00:00.000Z') // '2020-12-13T22:45:10.252Z'
*/
- future(years?: number, refDate?: string | Date): Date {
+ future(years?: number, refDate?: string | Date | number): Date {
const date = toDate(refDate);
const range = {
min: 1000,
@@ -104,9 +93,9 @@ export class _Date {
* @example
* faker.date.between('2020-01-01T00:00:00.000Z', '2030-01-01T00:00:00.000Z') // '2026-05-16T02:22:53.002Z'
*/
- between(from: string | Date, to: string | Date): Date {
- const fromMs = toMilliseconds(from);
- const toMs = toMilliseconds(to);
+ between(from: string | Date | number, to: string | Date | number): Date {
+ const fromMs = toDate(from).getTime();
+ const toMs = toDate(to).getTime();
const dateOffset = this.faker.datatype.number(toMs - fromMs);
return new Date(fromMs + dateOffset);
@@ -129,14 +118,18 @@ export class _Date {
* faker.date.betweens('2020-01-01T00:00:00.000Z', '2030-01-01T00:00:00.000Z', 2)
* // [ 2023-05-02T16:00:00.000Z, 2026-09-01T08:00:00.000Z ]
*/
- betweens(from: string | Date, to: string | Date, num?: number): Date[] {
+ betweens(
+ from: string | Date | number,
+ to: string | Date | number,
+ num?: number
+ ): Date[] {
if (typeof num === 'undefined') {
num = 3;
}
const dates: Date[] = [];
- for (let i = 0; i < num; i++) {
+ while (dates.length < num) {
dates.push(this.between(from, to));
}
@@ -156,7 +149,7 @@ export class _Date {
* faker.date.recent(10) // '2022-01-29T06:12:12.829Z'
* faker.date.recent(10, '2020-01-01T00:00:00.000Z') // '2019-12-27T18:11:19.117Z'
*/
- recent(days?: number, refDate?: string | Date): Date {
+ recent(days?: number, refDate?: string | Date | number): Date {
const date = toDate(refDate);
const range = {
min: 1000,
@@ -183,7 +176,7 @@ export class _Date {
* faker.date.soon(10) // '2022-02-11T05:14:39.138Z'
* faker.date.soon(10, '2020-01-01T00:00:00.000Z') // '2020-01-01T02:40:44.990Z'
*/
- soon(days?: number, refDate?: string | Date): Date {
+ soon(days?: number, refDate?: string | Date | number): Date {
const date = toDate(refDate);
const range = {
min: 1000,