From adfa9947b52f3e42738ab6a4ff8eac8d149d0a34 Mon Sep 17 00:00:00 2001 From: Shivangi Chatterjee Date: Tue, 14 Mar 2023 20:48:51 -0500 Subject: [PATCH 1/3] Added two new functions dateroll and datediff --- lib/date.js | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++ test/date.js | 29 ++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 test/date.js diff --git a/lib/date.js b/lib/date.js index dc7d02d0..317854ea 100644 --- a/lib/date.js +++ b/lib/date.js @@ -1,4 +1,7 @@ 'use strict'; + +const { date } = require('.'); + var helpers = module.exports; /** @@ -22,3 +25,86 @@ helpers.year = require('year'); */ helpers.moment = helpers.date = require('helper-date'); + +helpers.ONE_SEC = 1000; +helpers.ONE_MIN = helpers.ONE_SEC * 60; +helpers.ONE_HOUR = helpers.ONE_MIN * 60; +helpers.ONE_DAY = helpers.ONE_HOUR * 24; +helpers.ONE_YEAR = helpers.ONE_DAY * 365; + + +helpers.dateroll = function (date1, nUnit, unit, format){ + var dateStart = null; + + if ( date1 instanceof Date){ + dateStart = date1 + }else if ( typeof(date1) == 'string'){ + dateStart = new Date(date1); + } + + var time = dateStart.getTime(); + var delta = 0; + + if ( unit == "year" ){ + delta = nUnit * helpers.ONE_YEAR; + }else if ( unit == "day" ){ + delta = nUnit * helpers.ONE_DAY; + }else if ( unit == "hour" ){ + delta = nUnit * helpers.ONE_HOUR; + }else if ( unit == "minute" ){ + delta = nUnit * helpers.ONE_MIN; + }else if ( unit == "second" ){ + delta = nUnit * helpers.ONE_SEC; + } + + time = time + delta; + + var d = new Date(); + d.setTime(time); + + var formattedDate = ""; + + if ( typeof(format) == 'string' && format ){ + formattedDate = format.replace("yyyy", d.getUTCFullYear()).replace("MM", ("0"+(d.getUTCMonth()+1)).slice(-2)).replace("dd", ("0" + d.getUTCDate()).slice(-2)) + }else{ + formattedDate = + d.getUTCFullYear() + "-" + ("0"+(d.getUTCMonth()+1)).slice(-2) + "-" + + ("0" + d.getUTCDate()).slice(-2); + } + + return formattedDate; + +} + + +helpers.datediff = function(date1, date2, unit){ + let dateFrom= null; + let dateTo = null; + if ( date1 instanceof Date ) { + dateFrom = date1 ; + }else if ( typeof(date1) == 'string' ){ + dateFrom = new Date(date1); + } + + if ( date2 instanceof Date ) { + dateTo = date2 ; + }else if ( typeof(date2) == 'string' ){ + dateTo = new Date(date2); + } + + + var delta = dateTo.getTime() - dateFrom.getTime(); + + if ( unit == "year" ){ + return delta / helpers.ONE_YEAR; + }else if ( unit == "day"){ + return delta / helpers.ONE_DAY; + }else if ( unit == "hour"){ + return delta / helpers.ONE_HOUR; + }else if ( unit == "minute"){ + return delta / helpers.ONE_MIN; + }else if ( unit == "second"){ + return delta / helpers.ONE_SEC; + }else{ + return delta / helpers.ONE_DAY; + } +} \ No newline at end of file diff --git a/test/date.js b/test/date.js new file mode 100644 index 00000000..5b8cfe7d --- /dev/null +++ b/test/date.js @@ -0,0 +1,29 @@ +'use strict'; + +require('mocha'); +var assert = require('assert'); +var hbs = require('handlebars').create(); +var helpers = require('..'); +helpers.date({handlebars: hbs}); + +describe('date', function() { + describe('datediff', function() { + describe('inline or subexpression', function() { + it('should return the difference of two numbers.', function() { + var fn = hbs.compile('{{datediff dateFrom dateTo unit}}'); + var r = fn({dateFrom: "2022-01-01", dateTo: "2023-01-01", unit: "year"}); + console.log("Result: " + r); + assert.equal(r, '1'); + }); + }); + }); + + describe('datedroll', function() { + describe('inline', function() { + it('should return the computed date.', function() { + var fn = hbs.compile('{{dateroll dateFrom nUnit unit}}'); + assert.equal(fn({dateFrom: "2022-01-01", nUnit: 365, unit: "day", format: "yyyy-MM-dd"}), '2023-01-01'); + }); + }); + }); +}); From 68db59a20d29ac032122a7ab857ff5b46889b733 Mon Sep 17 00:00:00 2001 From: Shivangi Chatterjee Date: Tue, 14 Mar 2023 21:02:51 -0500 Subject: [PATCH 2/3] Added two new functions dateroll and datediff --- lib/date.js | 142 ++++++++++++++++++++++++++-------------------------- 1 file changed, 70 insertions(+), 72 deletions(-) diff --git a/lib/date.js b/lib/date.js index 317854ea..9c7daaf8 100644 --- a/lib/date.js +++ b/lib/date.js @@ -33,78 +33,76 @@ helpers.ONE_DAY = helpers.ONE_HOUR * 24; helpers.ONE_YEAR = helpers.ONE_DAY * 365; -helpers.dateroll = function (date1, nUnit, unit, format){ - var dateStart = null; - - if ( date1 instanceof Date){ - dateStart = date1 - }else if ( typeof(date1) == 'string'){ - dateStart = new Date(date1); - } - - var time = dateStart.getTime(); - var delta = 0; - - if ( unit == "year" ){ - delta = nUnit * helpers.ONE_YEAR; - }else if ( unit == "day" ){ - delta = nUnit * helpers.ONE_DAY; - }else if ( unit == "hour" ){ - delta = nUnit * helpers.ONE_HOUR; - }else if ( unit == "minute" ){ - delta = nUnit * helpers.ONE_MIN; - }else if ( unit == "second" ){ - delta = nUnit * helpers.ONE_SEC; - } - - time = time + delta; - - var d = new Date(); - d.setTime(time); - - var formattedDate = ""; - - if ( typeof(format) == 'string' && format ){ - formattedDate = format.replace("yyyy", d.getUTCFullYear()).replace("MM", ("0"+(d.getUTCMonth()+1)).slice(-2)).replace("dd", ("0" + d.getUTCDate()).slice(-2)) - }else{ - formattedDate = + d.getUTCFullYear() + "-" + ("0"+(d.getUTCMonth()+1)).slice(-2) + "-" + - ("0" + d.getUTCDate()).slice(-2); - } - - return formattedDate; +helpers.dateroll = function(date1, nUnit, unit, format) { + var dateStart = null; + + if ( date1 instanceof Date) { + dateStart = date1; + } else if ( typeof(date1) == 'string') { + dateStart = new Date(date1); + } + + var time = dateStart.getTime(); + var delta = 0; + + if ( unit == 'year' ) { + delta = nUnit * helpers.ONE_YEAR; + } else if ( unit == 'day' ) { + delta = nUnit * helpers.ONE_DAY; + } else if ( unit == 'hour' ) { + delta = nUnit * helpers.ONE_HOUR; + } else if ( unit == 'minute' ) { + delta = nUnit * helpers.ONE_MIN; + } else if ( unit == 'second' ) { + delta = nUnit * helpers.ONE_SEC; + } + + time = time + delta; + + var d = new Date(); + d.setTime(time); + + var formattedDate = ''; + + if ( typeof(format) == 'string' && format ) { + formattedDate = format.replace('yyyy', d.getUTCFullYear()).replace('MM', ('0'+(d.getUTCMonth()+1)).slice(-2)).replace('dd', ('0' + d.getUTCDate()).slice(-2)) + } else { + formattedDate = + d.getUTCFullYear() + '-' + ('0'+(d.getUTCMonth()+1)).slice(-2) + '-' + + ('0' + d.getUTCDate()).slice(-2); + } + + return formattedDate; } - -helpers.datediff = function(date1, date2, unit){ - let dateFrom= null; - let dateTo = null; - if ( date1 instanceof Date ) { - dateFrom = date1 ; - }else if ( typeof(date1) == 'string' ){ - dateFrom = new Date(date1); - } - - if ( date2 instanceof Date ) { - dateTo = date2 ; - }else if ( typeof(date2) == 'string' ){ - dateTo = new Date(date2); - } - - - var delta = dateTo.getTime() - dateFrom.getTime(); - - if ( unit == "year" ){ - return delta / helpers.ONE_YEAR; - }else if ( unit == "day"){ - return delta / helpers.ONE_DAY; - }else if ( unit == "hour"){ - return delta / helpers.ONE_HOUR; - }else if ( unit == "minute"){ - return delta / helpers.ONE_MIN; - }else if ( unit == "second"){ - return delta / helpers.ONE_SEC; - }else{ - return delta / helpers.ONE_DAY; - } -} \ No newline at end of file +helpers.datediff = function(date1, date2, unit) { + let dateFrom= null; + let dateTo = null; + if ( date1 instanceof Date ) { + dateFrom = date1 ; + } else if ( typeof(date1) == 'string' ) { + dateFrom = new Date(date1); + } + + if ( date2 instanceof Date ) { + dateTo = date2 ; + } else if ( typeof(date2) == 'string' ) { + dateTo = new Date(date2); + } + + var delta = dateTo.getTime() - dateFrom.getTime(); + + if ( unit == 'year' ) { + return delta / helpers.ONE_YEAR; + } else if ( unit == 'day') { + return delta / helpers.ONE_DAY; + } else if ( unit == 'hour') { + return delta / helpers.ONE_HOUR; + } else if ( unit == 'minute') { + return delta / helpers.ONE_MIN; + } else if ( unit == 'second') { + return delta / helpers.ONE_SEC; + } else { + return delta / helpers.ONE_DAY; + } +} From 819a882739925b36657e59e3e78657e0c94a8a61 Mon Sep 17 00:00:00 2001 From: Shivangi Chatterjee Date: Tue, 14 Mar 2023 21:12:45 -0500 Subject: [PATCH 3/3] Added two new functions dateroll and datediff --- lib/date.js | 33 ++++++++++++++++----------------- test/date.js | 4 ++-- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/lib/date.js b/lib/date.js index 9c7daaf8..12b35275 100644 --- a/lib/date.js +++ b/lib/date.js @@ -38,22 +38,22 @@ helpers.dateroll = function(date1, nUnit, unit, format) { if ( date1 instanceof Date) { dateStart = date1; - } else if ( typeof(date1) == 'string') { + } else if ( typeof (date1) === 'string') { dateStart = new Date(date1); } var time = dateStart.getTime(); var delta = 0; - if ( unit == 'year' ) { + if ( unit === 'year' ) { delta = nUnit * helpers.ONE_YEAR; - } else if ( unit == 'day' ) { + } else if ( unit === 'day' ) { delta = nUnit * helpers.ONE_DAY; - } else if ( unit == 'hour' ) { + } else if ( unit === 'hour' ) { delta = nUnit * helpers.ONE_HOUR; - } else if ( unit == 'minute' ) { + } else if ( unit === 'minute' ) { delta = nUnit * helpers.ONE_MIN; - } else if ( unit == 'second' ) { + } else if ( unit === 'second' ) { delta = nUnit * helpers.ONE_SEC; } @@ -64,7 +64,7 @@ helpers.dateroll = function(date1, nUnit, unit, format) { var formattedDate = ''; - if ( typeof(format) == 'string' && format ) { + if ( typeof (format) === 'string' && format ) { formattedDate = format.replace('yyyy', d.getUTCFullYear()).replace('MM', ('0'+(d.getUTCMonth()+1)).slice(-2)).replace('dd', ('0' + d.getUTCDate()).slice(-2)) } else { formattedDate = + d.getUTCFullYear() + '-' + ('0'+(d.getUTCMonth()+1)).slice(-2) + '-' + @@ -72,37 +72,36 @@ helpers.dateroll = function(date1, nUnit, unit, format) { } return formattedDate; - -} +}; helpers.datediff = function(date1, date2, unit) { let dateFrom= null; let dateTo = null; if ( date1 instanceof Date ) { dateFrom = date1 ; - } else if ( typeof(date1) == 'string' ) { + } else if ( typeof (date1) === 'string' ) { dateFrom = new Date(date1); } if ( date2 instanceof Date ) { dateTo = date2 ; - } else if ( typeof(date2) == 'string' ) { + } else if (typeof (date2) === 'string') { dateTo = new Date(date2); } var delta = dateTo.getTime() - dateFrom.getTime(); - if ( unit == 'year' ) { + if ( unit === 'year' ) { return delta / helpers.ONE_YEAR; - } else if ( unit == 'day') { + } else if ( unit === 'day') { return delta / helpers.ONE_DAY; - } else if ( unit == 'hour') { + } else if ( unit === 'hour') { return delta / helpers.ONE_HOUR; - } else if ( unit == 'minute') { + } else if ( unit === 'minute') { return delta / helpers.ONE_MIN; - } else if ( unit == 'second') { + } else if ( unit === 'second') { return delta / helpers.ONE_SEC; } else { return delta / helpers.ONE_DAY; } -} +}; diff --git a/test/date.js b/test/date.js index 5b8cfe7d..afa0b482 100644 --- a/test/date.js +++ b/test/date.js @@ -11,7 +11,7 @@ describe('date', function() { describe('inline or subexpression', function() { it('should return the difference of two numbers.', function() { var fn = hbs.compile('{{datediff dateFrom dateTo unit}}'); - var r = fn({dateFrom: "2022-01-01", dateTo: "2023-01-01", unit: "year"}); + var r = fn({dateFrom: '2022-01-01', dateTo: '2023-01-01', unit: 'year'}); console.log("Result: " + r); assert.equal(r, '1'); }); @@ -22,7 +22,7 @@ describe('date', function() { describe('inline', function() { it('should return the computed date.', function() { var fn = hbs.compile('{{dateroll dateFrom nUnit unit}}'); - assert.equal(fn({dateFrom: "2022-01-01", nUnit: 365, unit: "day", format: "yyyy-MM-dd"}), '2023-01-01'); + assert.equal(fn({dateFrom: '2022-01-01', nUnit: 365, unit: 'day', format: 'yyyy-MM-dd'}), '2023-01-01'); }); }); });