@my-devkit/core 1.0.119 → 1.0.120

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.
@@ -16,6 +16,7 @@ export declare class DateHelper {
16
16
  static addMiliseconds(startDate: Date, numberOfMiliseconds: number): Date;
17
17
  static getDay(date: Date): string;
18
18
  static getMilitaryTime(date: Date): string;
19
+ static toHumanReadableDate(date: Date): string;
19
20
  }
20
21
  export declare namespace DateHelper {
21
22
  type Format = 'year' | 'quarter' | 'month';
@@ -106,6 +106,60 @@ class DateHelper {
106
106
  const minute = date.getMinutes();
107
107
  return `${('00' + hours).slice(-2)}:${('00' + minute).slice(-2)}`;
108
108
  }
109
+ static toHumanReadableDate(date) {
110
+ const reference = new Date();
111
+ const startOfDay = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate());
112
+ const oneSecMs = 1000;
113
+ const oneMinMs = 60 * oneSecMs;
114
+ const oneHourMs = 60 * oneMinMs;
115
+ const oneDayMs = 24 * oneHourMs;
116
+ const diffDays = Math.floor((startOfDay(reference).getTime() - startOfDay(date).getTime()) / oneDayMs);
117
+ const diffMs = reference.getTime() - date.getTime();
118
+ const isFuture = diffMs < 0;
119
+ const absoluteDiffMs = Math.abs(diffMs);
120
+ const seconds = Math.floor((absoluteDiffMs / 1000) % 60);
121
+ const minutes = Math.floor((absoluteDiffMs / (1000 * 60)) % 60);
122
+ const hours = Math.floor((absoluteDiffMs / (1000 * 60 * 60)) % 24);
123
+ const relativeTime = (0, vendors_1._compact)([
124
+ hours > 0 ? `${hours} hour${hours > 1 ? 's' : ''}` : null,
125
+ minutes > 0 ? `${minutes} min${minutes > 1 ? 's' : ''}` : null,
126
+ seconds > 0 && hours === 0 && minutes === 0 ? `${seconds} sec${seconds > 1 ? 's' : ''}` : null,
127
+ ]).slice(0, 2).join(', ');
128
+ const timeFormatter = new Intl.DateTimeFormat("en-GB", {
129
+ hour: "numeric",
130
+ minute: "2-digit",
131
+ hour12: false,
132
+ });
133
+ const fullDateFormatter = new Intl.DateTimeFormat("en-GB", {
134
+ year: "numeric",
135
+ month: "short",
136
+ day: "numeric",
137
+ hour: "numeric",
138
+ minute: "2-digit",
139
+ hour12: false
140
+ });
141
+ const weekday = new Intl.DateTimeFormat("en-GB", { weekday: "long" }).format(date);
142
+ switch (true) {
143
+ case absoluteDiffMs < oneSecMs:
144
+ return `Just now`;
145
+ case isFuture && absoluteDiffMs < 3 * oneHourMs:
146
+ return `In ${relativeTime} from now`;
147
+ case !isFuture && absoluteDiffMs < 3 * oneHourMs:
148
+ return `${relativeTime} ago`;
149
+ case diffDays === 0:
150
+ return `Today at ${timeFormatter.format(date)}`;
151
+ case diffDays === 1:
152
+ return `Yesterday at ${timeFormatter.format(date)}`;
153
+ case diffDays === -1:
154
+ return `Tomorrow at ${timeFormatter.format(date)}`;
155
+ case diffDays > 1 && diffDays < 7:
156
+ return `Last ${weekday} at ${timeFormatter.format(date)}`;
157
+ case diffDays < -1 && diffDays > -7:
158
+ return `Next ${weekday} at ${timeFormatter.format(date)}`;
159
+ default:
160
+ return fullDateFormatter.format(date);
161
+ }
162
+ }
109
163
  }
110
164
  exports.DateHelper = DateHelper;
111
165
  //# sourceMappingURL=date-helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-helper.js","sourceRoot":"","sources":["../src/date-helper.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AAEnC,MAAa,UAAU;IACZ,MAAM,CAAC,eAAe;QACzB,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,EACrE,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,aAAa,EAAE,EAAE,GAAG,CAAC,aAAa,EAAE,EAAE,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC/F,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,SAAe,EAAE,OAAO,GAAG,IAAI,IAAI,EAAE;QAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAAC,SAAe,EAAE,OAAO,GAAG,IAAI,IAAI,EAAE;QAClE,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACzE,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAAC,SAAe,EAAE,OAAO,GAAG,IAAI,IAAI,EAAE,EAAE,KAAK,GAAG,KAAK;QACrF,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,qBAA6B,EAAE,KAAK,GAAG,KAAK;QAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QACvE,qBAAqB,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QACnE,qBAAqB,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAChE,qBAAqB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,qBAAqB,GAAG,IAAI,GAAG,OAAO,CAAC;QAE3D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAE3C,IAAI,IAAI,EAAE,CAAC;YACP,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,QAAQ,IAAI,KAAK,MAAM,OAAO,SAAS,OAAO,QAAQ,WAAW,KAAK,CAAC;QAC7H,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACR,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,OAAO,SAAS,OAAO,QAAQ,WAAW,KAAK,CAAC;QAChG,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,SAAS,OAAO,QAAQ,WAAW,KAAK,CAAC;QACzF,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,QAAQ,WAAW,KAAK,CAAC;QACzE,CAAC;QAED,OAAO,GAAG,WAAW,KAAK,CAAC;IAC/B,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,IAAU,EAAE,MAAyB;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtD,QAAQ,MAAM,EAAE,CAAC;YACb,KAAK,MAAM;gBACP,OAAO,GAAG,IAAI,EAAE,CAAC;YACrB,KAAK,SAAS;gBACV,OAAO,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC;YACjC,KAAK,OAAO;gBACR,OAAO,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;YAE9B;gBACI,OAAO,MAAsB,CAAC;QACtC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,YAAoB;QACxC,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC7B,OAAO,MAAM,CAAC;YAClB,KAAK,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC;gBACpC,OAAO,SAAS,CAAC;YACrB,KAAK,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC7C,OAAO,OAAO,CAAC;YACnB;gBACI,IAAI,CAAC;QACb,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,GAAG,KAAa;QACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAClB,OAAO,IAAI,CAAC;QAEhB,MAAM,WAAW,GAAG,IAAA,gBAAM,EAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QAEnE,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,SAAe,EAAE,aAAqB;QACzD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CACpB,SAAS,CAAC,cAAc,EAAE,GAAG,aAAa,EAC1C,SAAS,CAAC,WAAW,EAAE,EACvB,SAAS,CAAC,UAAU,EAAE,EACtB,SAAS,CAAC,WAAW,EAAE,EACvB,SAAS,CAAC,aAAa,EAAE,EACzB,SAAS,CAAC,aAAa,EAAE,EACzB,SAAS,CAAC,kBAAkB,EAAE,CACjC,CAAC,CAAC;IACP,CAAC;IAGM,MAAM,CAAC,SAAS,CAAC,SAAe,EAAE,cAAsB;QAC3D,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CACpB,SAAS,CAAC,cAAc,EAAE,EAC1B,SAAS,CAAC,WAAW,EAAE,GAAG,cAAc,EACxC,SAAS,CAAC,UAAU,EAAE,EACtB,SAAS,CAAC,WAAW,EAAE,EACvB,SAAS,CAAC,aAAa,EAAE,EACzB,SAAS,CAAC,aAAa,EAAE,EACzB,SAAS,CAAC,kBAAkB,EAAE,CACjC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,SAAe,EAAE,YAAoB;QACvD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CACpB,SAAS,CAAC,cAAc,EAAE,EAC1B,SAAS,CAAC,WAAW,EAAE,EACvB,SAAS,CAAC,UAAU,EAAE,GAAG,YAAY,EACrC,SAAS,CAAC,WAAW,EAAE,EACvB,SAAS,CAAC,aAAa,EAAE,EACzB,SAAS,CAAC,aAAa,EAAE,EACzB,SAAS,CAAC,kBAAkB,EAAE,CACjC,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,SAAe,EAAE,aAAqB;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,GAAG,aAAa,CAAC,CAAC;IAC1D,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,SAAe,EAAE,eAAuB;QAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,GAAG,eAAe,CAAC,CAAC;IAC5D,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,SAAe,EAAE,eAAuB;QAC7D,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,GAAG,eAAe,CAAC,CAAC;IAClE,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,SAAe,EAAE,mBAA2B;QACrE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CACpB,SAAS,CAAC,cAAc,EAAE,EAC1B,SAAS,CAAC,WAAW,EAAE,EACvB,SAAS,CAAC,UAAU,EAAE,EACtB,SAAS,CAAC,WAAW,EAAE,EACvB,SAAS,CAAC,aAAa,EAAE,EACzB,SAAS,CAAC,aAAa,EAAE,EACzB,SAAS,CAAC,kBAAkB,EAAE,GAAG,mBAAmB,CACvD,CAAC,CAAC;IACP,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,IAAU;QAC3B,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,IAAU;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAEjC,OAAO,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,CAAC;CACJ;AAtKD,gCAsKC"}
1
+ {"version":3,"file":"date-helper.js","sourceRoot":"","sources":["../src/date-helper.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@my-devkit/core",
3
- "version": "1.0.119",
3
+ "version": "1.0.120",
4
4
  "description": "My Devkit: common tools",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -1,4 +1,4 @@
1
- import { _sumBy } from './vendors';
1
+ import { _compact, _sumBy } from './vendors';
2
2
 
3
3
  export class DateHelper {
4
4
  public static getUTCTimestamp(): number {
@@ -166,6 +166,70 @@ export class DateHelper {
166
166
 
167
167
  return `${('00' + hours).slice(-2)}:${('00' + minute).slice(-2)}`;
168
168
  }
169
+
170
+ public static toHumanReadableDate(date: Date): string {
171
+ const reference = new Date();
172
+
173
+ const startOfDay = (d: Date) => new Date(d.getFullYear(), d.getMonth(), d.getDate());
174
+
175
+ const oneSecMs = 1000;
176
+ const oneMinMs = 60 * oneSecMs;
177
+ const oneHourMs = 60 * oneMinMs;
178
+ const oneDayMs = 24 * oneHourMs;
179
+
180
+ const diffDays = Math.floor((startOfDay(reference).getTime() - startOfDay(date).getTime()) / oneDayMs);
181
+
182
+ const diffMs = reference.getTime() - date.getTime();
183
+
184
+ const isFuture = diffMs < 0;
185
+ const absoluteDiffMs = Math.abs(diffMs);
186
+ const seconds = Math.floor((absoluteDiffMs / 1000) % 60);
187
+ const minutes = Math.floor((absoluteDiffMs / (1000 * 60)) % 60);
188
+ const hours = Math.floor((absoluteDiffMs / (1000 * 60 * 60)) % 24);
189
+
190
+ const relativeTime = _compact([
191
+ hours > 0 ? `${hours} hour${hours > 1 ? 's' : ''}` : null,
192
+ minutes > 0 ? `${minutes} min${minutes > 1 ? 's' : ''}` : null,
193
+ seconds > 0 && hours === 0 && minutes === 0 ? `${seconds} sec${seconds > 1 ? 's' : ''}` : null,
194
+ ]).slice(0, 2).join(', ');
195
+
196
+ const timeFormatter = new Intl.DateTimeFormat("en-GB", {
197
+ hour: "numeric",
198
+ minute: "2-digit",
199
+ hour12: false,
200
+ });
201
+
202
+ const fullDateFormatter = new Intl.DateTimeFormat("en-GB", {
203
+ year: "numeric",
204
+ month: "short",
205
+ day: "numeric",
206
+ hour: "numeric",
207
+ minute: "2-digit",
208
+ hour12: false
209
+ });
210
+ const weekday = new Intl.DateTimeFormat("en-GB", { weekday: "long" }).format(date);
211
+
212
+ switch (true) {
213
+ case absoluteDiffMs < oneSecMs:
214
+ return `Just now`;
215
+ case isFuture && absoluteDiffMs < 3 * oneHourMs:
216
+ return `In ${relativeTime} from now`;
217
+ case !isFuture && absoluteDiffMs < 3 * oneHourMs:
218
+ return `${relativeTime} ago`;
219
+ case diffDays === 0:
220
+ return `Today at ${timeFormatter.format(date)}`;
221
+ case diffDays === 1:
222
+ return `Yesterday at ${timeFormatter.format(date)}`;
223
+ case diffDays === -1:
224
+ return `Tomorrow at ${timeFormatter.format(date)}`;
225
+ case diffDays > 1 && diffDays < 7:
226
+ return `Last ${weekday} at ${timeFormatter.format(date)}`;
227
+ case diffDays < -1 && diffDays > -7:
228
+ return `Next ${weekday} at ${timeFormatter.format(date)}`;
229
+ default:
230
+ return fullDateFormatter.format(date);
231
+ }
232
+ }
169
233
  }
170
234
 
171
235
  export namespace DateHelper {