class LocalisationClass { timeformats = { 'el-GR': 'DD/MM/YYYY', 'en-CA': 'DD/MM/YYYY', 'en-GB': 'DD/MM/YYYY', //UK 'en-US': 'MM/DD/YYYY', //usa 'fr-CA': 'YYYY-MM-DD',//singapore 'fy-NL': 'DD-MM-YYYY',//Ca 'ug-CN': 'YYYY-MM-DD',//chapman } /** * * @type {{}} */ localeObj = {}; /** * * @param obj */ constructor(obj) { this.localeObj = obj; } /** * * @param code * @returns {string} */ getLocaleDateString(code) { if (this.timeformats[code] !== undefined) { return this.timeformats[code] } else { return "d/MM/yyyy"; } } /** * * @param code * @returns {string} */ getLocaleTimeString() { if (this.localeObj.hasOwnProperty('timeformat') && this.localeObj.timeformat.length > 1) { return this.localeObj.timeformat } return "hh:mm:ss a"; } /** * * @param dateString * @returns {null|Date} */ parseDateStr(dateString) { if (dateString == '') { return null; } var _date = 'DD/MM/YYYY' var _time = 'H:MM:ss' var _timezone='Europe/London' var _timezonelocale='en-GB' if (this.localeObj.hasOwnProperty('location')) { _timezone= this.localeObj.location; } if (this.localeObj.hasOwnProperty('dateformat')) { _timezonelocale = this.localeObj.dateformat _date = this.getLocaleDateString(this.localeObj.dateformat) } if (this.localeObj.hasOwnProperty('timeformat')) { _time = this.getLocaleTimeString() } let format = _date; // moment.locale(_timezone) //.tz(_timezone) //check if is unixtimestamp if (parseInt(dateString) > 100000) { let format = _date + ' ' + _time; return moment(dateString * 1000).format(format).toString() } //explode string if (dateString.includes(".")) { //DD.mm.YYYY, or DD.mm.yy var dateArr = dateString.split("."); } else if (dateString.includes("-")) { //DD-mm-YYYY, or DD-mm-yy var dateArr = dateString.split("-"); } else if (dateString.includes("\/")) { //DD/mm/YYYY, or DD/mm/yy var dateArr = dateString.split("\/"); } if (dateArr.length == 1) { return null; //wrong format } //check if the given date has time on //parse time after the year - separated by space let spacePos = dateArr[2].indexOf(" "); let timeString = dateArr[2].substr(spacePos + 1); let timeArr = timeString.split(":"); //check if the datetime includes minute / seconds if (timeArr.length > 1) { format = _date + ' ' + _time; } let date = moment(dateString) if (date.isValid()) { return date.format(format).toString() } } /** * * @param str * @returns {boolean|*} */ translate(str) { if (this.localeObj.hasOwnProperty(str)) { return this.localeObj[str]; } else { return false; } } /** * * @param str * @param defaultStr * @returns {*|boolean} * @private */ __(str, defaultStr) { if (this.translate(str)) { return this.translate(str); } else { return defaultStr; } } /** * * @returns {string|*} */ dateFormat() { if (this.localeObj.hasOwnProperty('dateformat')) { return this.getLocaleDateString(this.localeObj.dateformat) } else { return 'DD/MM/YYYY'; } } /** * * @returns {string|*[]} */ datePickerFormat(){ if (this.localeObj !==undefined && this.localeObj.hasOwnProperty('dateformat')) { let dateFormatter=this.getLocaleDateString(this.localeObj.dateformat).toLowerCase() var dateArr =[] if (dateFormatter.includes(".")) { //DD.mm.YYYY, or DD.mm.yy dateArr = dateFormatter.split("."); if (dateArr[0]=='mm'){ dateArr[0]='MM' }else if (dateArr[1]=='mm'){ dateArr[1]='MM' }else{ dateArr[2]='MM' } dateArr=dateArr[0]+'.'+dateArr[1]+'.'+dateArr[2] } else if (dateFormatter.includes("-")) { //DD-mm-YYYY, or DD-mm-yy dateArr = dateFormatter.split("-"); if (dateArr[0]=='mm'){ dateArr[0]='MM' }else if (dateArr[1]=='mm'){ dateArr[1]='MM' }else{ dateArr[2]='MM' } dateArr=dateArr[0]+'-'+dateArr[1]+'-'+dateArr[2] } else if (dateFormatter.includes("\/")) { //DD/mm/YYYY, or DD/mm/yy dateArr = dateFormatter.split("\/"); if (dateArr[0]=='mm'){ dateArr[0]='MM' }else if (dateArr[1]=='mm'){ dateArr[1]='MM' }else{ dateArr[2]='MM' } dateArr=dateArr[0]+'\/'+dateArr[1]+'\/'+dateArr[2] } return dateArr } else { return 'dd/MM/yyyy'; } } /** * * @returns {string|*} */ dateTimeFormat() { if (this.localeObj.hasOwnProperty('timeformat')) { return this.localeObj.timeformat } else { return 'H:MM:ss'; } } /** * * @param dateString * @returns {*} */ translateDate(dateString) { return this.parseDateStr(dateString); } /** * * @param dateString * @returns {string} */ translateunixtimestamp(dateString) { return this.parseDateStr(dateString) } }