@spartacus/core
Version:
Spartacus - the core framework
28 lines • 4.42 kB
JavaScript
export class TimeUtils {
/**
* Returns the local timezone in a format that can be appended to a date-like string.
* @param invert (default: false): returns the opposite operator relative to the local timezone
*
* @example
* When locale is set to a CEST timezone, `getLocalTimezoneOffset()` returns '+02:00'
* and `getLocalTimezoneOffset(true)` returns '-02:00'
*/
static getLocalTimezoneOffset(invert) {
const offset = new Date().getTimezoneOffset() * -1;
const hours = Math.abs(Math.floor(offset / 60))
.toString()
.padStart(2, '0');
const minutes = (offset % 60).toString().padStart(2, '0');
const sign = offset >= 0 ? (invert ? `-` : `+`) : invert ? `+` : `-`;
return `${sign}${hours}:${minutes}`;
}
static convertDateToDatetime(date, endOfDay) {
return `${date}T${!endOfDay ? '00:00:00' : '23:59:59'}${TimeUtils.getLocalTimezoneOffset()}`;
}
static convertDatetimeToDate(datetime) {
return new Date(`${datetime.substring(0, 19)}${TimeUtils.getLocalTimezoneOffset(true)}`)
.toISOString()
.substring(0, 10);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3V0aWwvdGltZS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sU0FBUztJQUNwQjs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE1BQWdCO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQzVDLFFBQVEsRUFBRTthQUNWLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMxRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNyRSxPQUFPLEdBQUcsSUFBSSxHQUFHLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLHFCQUFxQixDQUFDLElBQVksRUFBRSxRQUFrQjtRQUMzRCxPQUFPLEdBQUcsSUFBSSxJQUNaLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQzNCLEdBQUcsU0FBUyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFFBQWdCO1FBQzNDLE9BQU8sSUFBSSxJQUFJLENBQ2IsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDeEU7YUFDRSxXQUFXLEVBQUU7YUFDYixTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBUaW1lVXRpbHMge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgbG9jYWwgdGltZXpvbmUgaW4gYSBmb3JtYXQgdGhhdCBjYW4gYmUgYXBwZW5kZWQgdG8gYSBkYXRlLWxpa2Ugc3RyaW5nLlxuICAgKiBAcGFyYW0gaW52ZXJ0IChkZWZhdWx0OiBmYWxzZSk6IHJldHVybnMgdGhlIG9wcG9zaXRlIG9wZXJhdG9yIHJlbGF0aXZlIHRvIHRoZSBsb2NhbCB0aW1lem9uZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBXaGVuIGxvY2FsZSBpcyBzZXQgdG8gYSBDRVNUIHRpbWV6b25lLCBgZ2V0TG9jYWxUaW1lem9uZU9mZnNldCgpYCByZXR1cm5zICcrMDI6MDAnXG4gICAqIGFuZCBgZ2V0TG9jYWxUaW1lem9uZU9mZnNldCh0cnVlKWAgcmV0dXJucyAnLTAyOjAwJ1xuICAgKi9cbiAgc3RhdGljIGdldExvY2FsVGltZXpvbmVPZmZzZXQoaW52ZXJ0PzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gbmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpICogLTE7XG4gICAgY29uc3QgaG91cnMgPSBNYXRoLmFicyhNYXRoLmZsb29yKG9mZnNldCAvIDYwKSlcbiAgICAgIC50b1N0cmluZygpXG4gICAgICAucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCBtaW51dGVzID0gKG9mZnNldCAlIDYwKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3Qgc2lnbiA9IG9mZnNldCA+PSAwID8gKGludmVydCA/IGAtYCA6IGArYCkgOiBpbnZlcnQgPyBgK2AgOiBgLWA7XG4gICAgcmV0dXJuIGAke3NpZ259JHtob3Vyc306JHttaW51dGVzfWA7XG4gIH1cblxuICBzdGF0aWMgY29udmVydERhdGVUb0RhdGV0aW1lKGRhdGU6IHN0cmluZywgZW5kT2ZEYXk/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7ZGF0ZX1UJHtcbiAgICAgICFlbmRPZkRheSA/ICcwMDowMDowMCcgOiAnMjM6NTk6NTknXG4gICAgfSR7VGltZVV0aWxzLmdldExvY2FsVGltZXpvbmVPZmZzZXQoKX1gO1xuICB9XG5cbiAgc3RhdGljIGNvbnZlcnREYXRldGltZVRvRGF0ZShkYXRldGltZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IERhdGUoXG4gICAgICBgJHtkYXRldGltZS5zdWJzdHJpbmcoMCwgMTkpfSR7VGltZVV0aWxzLmdldExvY2FsVGltZXpvbmVPZmZzZXQodHJ1ZSl9YFxuICAgIClcbiAgICAgIC50b0lTT1N0cmluZygpXG4gICAgICAuc3Vic3RyaW5nKDAsIDEwKTtcbiAgfVxufVxuIl19