@8ms/helpers 1.1.18 → 1.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,10 @@
1
1
  import { DateType } from './date';
2
+ declare type GetDateType = {
3
+ input: DateType;
4
+ setMidnight?: boolean;
5
+ };
2
6
  /**
3
7
  * Convert a (number | string | Date) into a Date object.
4
8
  */
5
- declare const getDate: ({ input }: {
6
- input: DateType;
7
- }) => Date;
9
+ declare const getDate: ({ input, setMidnight }: GetDateType) => Date;
8
10
  export default getDate;
@@ -3,36 +3,47 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- var addHours_1 = __importDefault(require("date-fns/addHours"));
7
6
  var parse_1 = __importDefault(require("date-fns/parse"));
8
- var subHours_1 = __importDefault(require("date-fns/subHours"));
9
7
  /**
10
8
  * Convert a (number | string | Date) into a Date object.
11
9
  */
12
10
  var getDate = function (_a) {
13
- var input = _a.input;
11
+ var input = _a.input, _b = _a.setMidnight, setMidnight = _b === void 0 ? true : _b;
14
12
  var date;
15
13
  if (input instanceof Date) {
16
14
  date = new Date(input.valueOf());
17
15
  }
18
- else if ('string' === typeof input) {
19
- var dateString = input.toString() + ' 00:00:00';
20
- date = (0, parse_1.default)(dateString, 'yyyy-MM-dd HH:mm:ss', new Date());
16
+ else if ('string' === typeof input || 'number' === typeof input) {
17
+ // Convert the input into string
18
+ var dateString = input.toString();
19
+ // 20220412
20
+ if (8 === dateString.length) {
21
+ var year = Number(dateString.substring(0, 4));
22
+ var month = Number(dateString.substring(4, 6));
23
+ var day = Number(dateString.substring(6, 8));
24
+ if (year > 999 && month < 13 && day < 32) {
25
+ date = new Date();
26
+ date.setUTCFullYear(year);
27
+ date.setUTCMonth(month - 1);
28
+ date.setUTCDate(day);
29
+ }
30
+ }
31
+ // 2022-04-12
32
+ else if (10 === dateString.length) {
33
+ var dateTimeString = dateString + ' 00:00:00s';
34
+ date = (0, parse_1.default)(dateTimeString, 'yyyy-MM-dd HH:mm:ss', new Date());
35
+ }
36
+ // 2022-04-12 01:01:01
37
+ else if (19 === dateString.length) {
38
+ date = (0, parse_1.default)(dateString, 'yyyy-MM-dd HH:mm:ss', new Date());
39
+ }
40
+ // Unsure date format, try anything
41
+ else {
42
+ date = new Date(dateString);
43
+ }
21
44
  }
22
- else if ('number' === typeof input) {
23
- var dateString = input.toString() + ' 00:00:00';
24
- date = (0, parse_1.default)(dateString, 'yyyyMMdd HH:mm:ss', new Date());
25
- }
26
- // Behind an hour (going back to DST)
27
- if (date.getTimezoneOffset() < 0) {
28
- date = (0, addHours_1.default)(date, 1);
29
- }
30
- // Forward an hour (going into BST)
31
- else if (date.getTimezoneOffset() > 0) {
32
- date = (0, subHours_1.default)(date, 1);
33
- }
34
- // Otherwise set to UTC hours
35
- else {
45
+ // Reset to UTC hours
46
+ if (setMidnight) {
36
47
  date.setHours(0, 0, 0, 0);
37
48
  }
38
49
  return date;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@8ms/helpers",
3
- "version": "1.1.18",
3
+ "version": "1.1.19",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/8millionstories-organisation/8ms-helpers-ts.git"
@@ -25,6 +25,7 @@
25
25
  "@types/node": "17.0.23",
26
26
  "babel-jest": "27.5.1",
27
27
  "crypto-js": "4.1.1",
28
+ "date-fns-tz": "1.3.3",
28
29
  "jest": "27.5.1",
29
30
  "ts-node": "10.7.0",
30
31
  "tslib": "2.3.1",