UNPKG

@kwiz/common

Version:

KWIZ common utilities and helpers for M365 platform

57 lines 2.53 kB
import { isISODate, isISODateUTC } from "../../helpers/date"; import { isDate, isNullOrEmptyString, isNullOrUndefined } from "../../helpers/typecheckers"; import { toIsoDateFormat } from "../date"; import { LocaleKnownScript } from "../knownscript"; import { SPServerLocalTimeToUTCSync } from "./web"; import { hasGlobalContext } from "./common"; function _SPServerLocalTimeToUTC(dateValueStr) { if (hasGlobalContext()) { //yyyy-MM-ddTHH:mm or SPServerLocalTime (5/27/2021 11:34) to UTC let utcTimeValue = SPServerLocalTimeToUTCSync(_spPageContextInfo.webServerRelativeUrl, dateValueStr); if (!isNullOrEmptyString(utcTimeValue)) { return new Date(utcTimeValue); } } return null; } export function parseDate(value) { if (isNullOrUndefined(value) || (isNullOrEmptyString(value) && !isDate(value))) { return null; } let dateValueStr = isDate(value) ? value.toISOString() : value; var valueAsDate = null; if (isISODateUTC(dateValueStr)) { valueAsDate = new Date(dateValueStr); } else if (isISODate(dateValueStr)) { //yyyy-MM-ddTHH:mm or SPServerLocalTime (5/27/2021 11:34) to UTC valueAsDate = _SPServerLocalTimeToUTC(dateValueStr); } else { //Don't think this is necessary because the SPServerLocalTimeToUTCSync can accept date strings in non ISO format (5/27/2021 11:34) var dateParts = dateValueStr.split(" "); if (dateParts.length) { let locales = LocaleKnownScript.loadSync(); valueAsDate = locales.ParseDate(dateValueStr); dateValueStr = toIsoDateFormat(valueAsDate, { omitZ: true }); valueAsDate = _SPServerLocalTimeToUTC(dateValueStr); if (valueAsDate instanceof Date && dateParts.length === 2) { var time = dateParts[1]; if (time.length) { var timeParts = locales.GetCurrentCulture() ? locales.GetCurrentCulture().dateTimeFormat.TimeSeparator : ":"; if (timeParts.length === 2) { var hours = Number(timeParts[0]); var minutes = Number(timeParts[1]); valueAsDate.setHours(hours); valueAsDate.setMinutes(minutes); } } } } } if (!valueAsDate) { valueAsDate = new Date(dateValueStr); } return isDate(valueAsDate) ? valueAsDate : null; } //# sourceMappingURL=date.js.map