users() optimized parseDateTime function

This commit is contained in:
Sebastian Hildebrandt 2020-04-20 10:54:45 +02:00
parent 0e9f3c0ff7
commit c9da7a37bc
3 changed files with 25 additions and 17 deletions

View File

@ -207,7 +207,7 @@
<div class="title">Downloads last month</div> <div class="title">Downloads last month</div>
</div> </div>
<div class="col-xl-4 col-lg-4 col-md-4 col-12"> <div class="col-xl-4 col-lg-4 col-md-4 col-12">
<div class="numbers">266</div> <div class="numbers">267</div>
<div class="title">Dependends</div> <div class="title">Dependends</div>
</div> </div>
</div> </div>

View File

@ -31,7 +31,8 @@ let _winDateFormat = {
dateSeperator: '', dateSeperator: '',
timeFormat: '', timeFormat: '',
timeSeperator: '', timeSeperator: '',
amDesignator: '' amDesignator: '',
pmDesignator: ''
}; };
// -------------------------- // --------------------------
@ -40,7 +41,7 @@ let _winDateFormat = {
function getWinCulture() { function getWinCulture() {
return new Promise((resolve) => { return new Promise((resolve) => {
process.nextTick(() => { process.nextTick(() => {
if (!_winDateFormat) { if (!_winDateFormat.dateFormat) {
util.powerShell('(get-culture).DateTimeFormat') util.powerShell('(get-culture).DateTimeFormat')
.then(data => { .then(data => {
let lines = data.toString().split('\r\n'); let lines = data.toString().split('\r\n');
@ -49,6 +50,7 @@ function getWinCulture() {
_winDateFormat.timeFormat = util.getValue(lines, 'ShortTimePattern', ':'); _winDateFormat.timeFormat = util.getValue(lines, 'ShortTimePattern', ':');
_winDateFormat.timeSeperator = util.getValue(lines, 'TimeSeparator', ':'); _winDateFormat.timeSeperator = util.getValue(lines, 'TimeSeparator', ':');
_winDateFormat.amDesignator = util.getValue(lines, 'AMDesignator', ':'); _winDateFormat.amDesignator = util.getValue(lines, 'AMDesignator', ':');
_winDateFormat.pmDesignator = util.getValue(lines, 'PMDesignator', ':');
resolve(_winDateFormat); resolve(_winDateFormat);
}) })
@ -288,10 +290,13 @@ function users(callback) {
getWinCulture() getWinCulture()
.then(culture => { .then(culture => {
result = parseUsersWin(lines, culture); result = parseUsersWin(lines, culture);
if (callback) { callback(result); }
resolve(result);
}); });
} else {
if (callback) { callback(result); }
resolve(result);
} }
if (callback) { callback(result); }
resolve(result);
}); });
} catch (e) { } catch (e) {
if (callback) { callback(result); } if (callback) { callback(result); }

View File

@ -135,9 +135,8 @@ function detectSplit(str) {
return seperator; return seperator;
} }
function parseTime(t, timeFormat, timeSeperator) { function parseTime(t, pmDesignator) {
timeFormat = timeFormat || ''; pmDesignator = pmDesignator || '';
timeSeperator = timeSeperator || '';
t = t.toUpperCase(); t = t.toUpperCase();
let hour = 0; let hour = 0;
let min = 0; let min = 0;
@ -147,7 +146,7 @@ function parseTime(t, timeFormat, timeSeperator) {
if (parts[2]) { if (parts[2]) {
parts[1] += parts[2]; parts[1] += parts[2];
} }
let isPM = (parts[1] && (parts[1].toLowerCase().indexOf('pm') > -1) || (parts[1].toLowerCase().indexOf('p.m.') > -1) || (parts[1].toLowerCase().indexOf('p. m.') > -1) || (parts[1].toLowerCase().indexOf('n') > -1) || (parts[1].toLowerCase().indexOf('ch') > -1) || (parts[1].toLowerCase().indexOf('ös') > -1) || timeSeperator); let isPM = (parts[1] && (parts[1].toLowerCase().indexOf('pm') > -1) || (parts[1].toLowerCase().indexOf('p.m.') > -1) || (parts[1].toLowerCase().indexOf('p. m.') > -1) || (parts[1].toLowerCase().indexOf('n') > -1) || (parts[1].toLowerCase().indexOf('ch') > -1) || (parts[1].toLowerCase().indexOf('ös') > -1) || (pmDesignator && parts[1].toLowerCase().indexOf(pmDesignator) > -1));
hour = parseInt(parts[0], 10); hour = parseInt(parts[0], 10);
min = parseInt(parts[1], 10); min = parseInt(parts[1], 10);
hour = isPM && hour < 12 ? hour + 12 : hour; hour = isPM && hour < 12 ? hour + 12 : hour;
@ -163,8 +162,7 @@ function parseDateTime(dt, culture) {
culture = culture || {}; culture = culture || {};
let dateFormat = (culture.dateFormat || '').toLowerCase(); let dateFormat = (culture.dateFormat || '').toLowerCase();
let timeFormat = (culture.timeFormat || ''); let timeFormat = (culture.timeFormat || '');
// let dateSeperator = (culture.dateSeperator || ''); let pmDesignator = (culture.pmDesignator || '');
let timeSeperator = (culture.timeSeperator || '');
const parts = dt.split(' '); const parts = dt.split(' ');
if (parts[0]) { if (parts[0]) {
@ -175,13 +173,18 @@ function parseDateTime(dt, culture) {
if (dtparts[0].length === 4) { if (dtparts[0].length === 4) {
// Dateformat: yyyy/mm/dd // Dateformat: yyyy/mm/dd
result.date = dtparts[0] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[2]).substr(-2); result.date = dtparts[0] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[2]).substr(-2);
} else if (dtparts[2].length === 2 || dateFormat.indexOf('/mm/') > -1) { } else if (dtparts[2].length === 2) {
// Dateformat: dd/mm/yy if ((dateFormat.indexOf('/d/') > -1 || dateFormat.indexOf('/dd/') > -1)) {
result.date = '20' + dtparts[2] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[0]).substr(-2); // Dateformat: mm/dd/yy
result.date = '20' + dtparts[2] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[0]).substr(-2);
} else {
// Dateformat: dd/mm/yy
result.date = '20' + dtparts[2] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[0]).substr(-2);
}
} else { } else {
// Dateformat: mm/dd/yyyy or dd/mm/yyyy // Dateformat: mm/dd/yyyy or dd/mm/yyyy
const isEN = ((dt.toLowerCase().indexOf('pm') > -1) || (dt.toLowerCase().indexOf('p.m.') > -1) || (dt.toLowerCase().indexOf('p. m.') > -1) || (dt.toLowerCase().indexOf('am') > -1) || (dt.toLowerCase().indexOf('a.m.') > -1) || (dt.toLowerCase().indexOf('a. m.') > -1)); const isEN = ((dt.toLowerCase().indexOf('pm') > -1) || (dt.toLowerCase().indexOf('p.m.') > -1) || (dt.toLowerCase().indexOf('p. m.') > -1) || (dt.toLowerCase().indexOf('am') > -1) || (dt.toLowerCase().indexOf('a.m.') > -1) || (dt.toLowerCase().indexOf('a. m.') > -1));
if (isEN || dateFormat.indexOf('/d/') > -1 || dateFormat.indexOf('/dd/') > -1) { if ((isEN || dateFormat.indexOf('/d/') > -1 || dateFormat.indexOf('/dd/') > -1) && dateFormat.indexOf('dd/') !== 0) {
// Dateformat: mm/dd/yyyy // Dateformat: mm/dd/yyyy
result.date = dtparts[2] + '-' + ('0' + dtparts[0]).substr(-2) + '-' + ('0' + dtparts[1]).substr(-2); result.date = dtparts[2] + '-' + ('0' + dtparts[0]).substr(-2) + '-' + ('0' + dtparts[1]).substr(-2);
} else { } else {
@ -198,7 +201,7 @@ function parseDateTime(dt, culture) {
// Dateformat: mm.dd.yyyy // Dateformat: mm.dd.yyyy
result.date = dtparts[2] + '-' + ('0' + dtparts[0]).substr(-2) + '-' + ('0' + dtparts[1]).substr(-2); result.date = dtparts[2] + '-' + ('0' + dtparts[0]).substr(-2) + '-' + ('0' + dtparts[1]).substr(-2);
} else { } else {
// Dateformat: dd.mm.yyyy // Dateformat: dd.mm.yyyy
result.date = dtparts[2] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[0]).substr(-2); result.date = dtparts[2] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[0]).substr(-2);
} }
} }
@ -214,7 +217,7 @@ function parseDateTime(dt, culture) {
if (parts[1]) { if (parts[1]) {
parts.shift(); parts.shift();
let time = parts.join(' '); let time = parts.join(' ');
result.time = parseTime(time, timeFormat, timeSeperator); result.time = parseTime(time, pmDesignator);
} }
return result; return result;
} }