From 91c493cf5c0cd3b124a8e7a2a78df7160246cb54 Mon Sep 17 00:00:00 2001 From: "Alex A. Naanou" Date: Thu, 1 Apr 2021 14:14:52 +0300 Subject: [PATCH] added DD:HH:MM:SS:mmm period support for Date.str2ms(..)... Signed-off-by: Alex A. Naanou --- Date.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Date.js b/Date.js index 5fae964..801391e 100644 --- a/Date.js +++ b/Date.js @@ -19,14 +19,31 @@ object.Mixin('DateMixin', 'soft', { return (new this()).getTimeStamp(...args) }, fromTimeStamp: function(ts){ return (new this()).setTimeStamp(ts) }, + // convert string time period to milliseconds... str2ms: function(str, dfl){ dfl = dfl || 'ms' + // number -- dfl unit... if(typeof(str) == typeof(123)){ var val = str str = dfl + // 00:00:00:00:000 format... + } else if(str.includes(':')){ + var units = str.split(/\s*:\s*/g).reverse() + // parse units... + var ms = units[0].length == 3 ? + parseFloat(units.shift() || 0) + : 0 + var [s=0, m=0, h=0, d=0] = units + // merge... + return ((((parseFloat(d || 0)*24 + + parseFloat(h || 0))*60 + + parseFloat(m || 0))*60 + + parseFloat(s || 0))*1000 + ms) + + // 00set format... } else { var val = parseFloat(str) str = str.trim() @@ -55,6 +72,9 @@ object.Mixin('DateMixin', 'soft', { return c ? val * c : NaN }, + + isPeriod: function(str){ + return !isNaN(this.str2ms(str)) }, })