diff --git a/CHANGELOG.md b/CHANGELOG.md index b0f365c..3bed039 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ For major (breaking) changes - version 3 and 2 see end of page. | Version | Date | Comment | | -------------- | -------------- | -------- | +| 4.14.6 | 2019-08-22 | `users()` improved date time parsing | | 4.14.5 | 2019-08-22 | `fsSize()` fix windows result as number | | 4.14.4 | 2019-07-20 | `verions()` fix pip, pip3 | | 4.14.3 | 2019-07-09 | `system()` sku fix windows | diff --git a/docs/history.html b/docs/history.html index ff0ec29..fee2e83 100644 --- a/docs/history.html +++ b/docs/history.html @@ -83,6 +83,11 @@ + + 4.14.6 + 2019-08-22 + users() improved date time parsing + 4.14.5 2019-08-22 diff --git a/docs/index.html b/docs/index.html index 1dc6d14..080b3b9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -168,7 +168,7 @@
systeminformation
-
Current Version: 4.14.5
+
Current Version: 4.14.6
diff --git a/lib/util.js b/lib/util.js index 8800433..f9d1dab 100644 --- a/lib/util.js +++ b/lib/util.js @@ -122,12 +122,36 @@ function decodeEscapeSequence(str, base) { function parseTime(t) { t = t.toUpperCase(); - const parts = t.split(':'); - let isPM = (parts[1] && (parts[1].toLowerCase().indexOf('pm') > -1) || (parts[1].toLowerCase().indexOf('p.m.') > -1) || (parts[1].toLowerCase().indexOf('p. m.') > -1)); - let hour = parseInt(parts[0], 10); - const min = parseInt(parts[1], 10); - hour = isPM && hour < 12 ? hour + 12 : hour; - return ('0' + hour).substr(-2) + ':' + ('0' + min).substr(-2); + let hour = 0; + let min = 0; + let parts = t.split(':'); + if (parts.length >= 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)); + hour = parseInt(parts[0], 10); + min = parseInt(parts[1], 10); + hour = isPM && hour < 12 ? hour + 12 : hour; + return ('0' + hour).substr(-2) + ':' + ('0' + min).substr(-2); + } + let parts = t.split('.'); + if (parts.length >= 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)); + hour = parseInt(parts[0], 10); + min = parseInt(parts[1], 10); + hour = isPM && hour < 12 ? hour + 12 : hour; + return ('0' + hour).substr(-2) + ':' + ('0' + min).substr(-2); + } + let parts = t.split(' '); + if (parts.length >= 2) { + let isPM = ((t.toLowerCase().indexOf('pm') > -1) || (t.toLowerCase().indexOf('p.m.') > -1) || (t.toLowerCase().indexOf('p. m.') > -1) || (t.toLowerCase().indexOf('n') > -1) || (t.toLowerCase().indexOf('ch') > -1) || (t.toLowerCase().indexOf('ös') > -1)); + hour = parseInt(parts[0], 10); + if (parts[1] === 'h' && parts[2]) { + min = parseInt(parts[2], 10); + } else { + min = parseInt(parts[1], 10); + } + hour = isPM && hour < 12 ? hour + 12 : hour; + return ('0' + hour).substr(-2) + ':' + ('0' + min).substr(-2); + } } function parseDateTime(dt) { @@ -138,10 +162,20 @@ function parseDateTime(dt) { const parts = dt.split(' '); if (parts[0]) { if (parts[0].indexOf('/') >= 0) { - // Dateformat: mm/dd/yyyy + // Dateformat: mm/dd/yyyy or dd/mm/yyyy or dd/mm/yy or yyyy/mm/dd const dtparts = parts[0].split('/'); if (dtparts.length === 3) { - result.date = dtparts[2] + '-' + ('0' + dtparts[0]).substr(-2) + '-' + ('0' + dtparts[1]).substr(-2); + if (dtparts[0].length === 4) { + // Dateformat: yyyy/mm/dd + result.date = dtparts[0] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[2]).substr(-2); + } else if (dtparts[2].length === 2) { + // Dateformat: dd/mm/yy + result.date = '20' + dtparts[2] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[0]).substr(-2); + } else { + // Dateformat: mm/dd/yyyy or dd/mm/yyyy + result.date = dtparts[2] + '-' + ('0' + dtparts[0]).substr(-2) + '-' + ('0' + dtparts[1]).substr(-2); + + } } } if (parts[0].indexOf('.') >= 0) { @@ -153,6 +187,7 @@ function parseDateTime(dt) { } if (parts[0].indexOf('-') >= 0) { // Dateformat: yyyy-mm-dd + const isEN = ((dt.toLowerCase().indexOf('pm') > -1) || (t.toLowerCase().indexOf('p.m.') > -1) || (t.toLowerCase().indexOf('p. m.') > -1) || (dt.toLowerCase().indexOf('am') > -1) || (t.toLowerCase().indexOf('a.m.') > -1) || (t.toLowerCase().indexOf('a. m.') > -1)); const dtparts = parts[0].split('-'); if (dtparts.length === 3) { result.date = dtparts[0] + '-' + ('0' + dtparts[1]).substr(-2) + '-' + ('0' + dtparts[2]).substr(-2); @@ -160,7 +195,8 @@ function parseDateTime(dt) { } } if (parts[1]) { - let time = parts[1] + (parts[2] ? parts[2] : ''); + parts.shift(); + let time = parts.join(' '); result.time = parseTime(time); } return result;