From: Bill Erickson Date: Thu, 31 May 2018 14:58:38 +0000 (-0400) Subject: LP#1774427 Parse DoB dates as whole dates X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=4cd44bb331ebb0566a63dc290557e993b0318e34;p=evergreen%2Ftadl.git LP#1774427 Parse DoB dates as whole dates Fixes DoB parsing in the browser client patron edit interface by creating date objects from a whole YMD date string instead of compiling the date as collection of pieces. Compiling dates from pieces (calling setFullYear(), setMonth(), etc.) can have unexpected consequences, because a change of month can result in a change of days as well, if the number of days in the date object exceeds the capacity of the selected month. For example: --- > d = new Date() 2018-05-31T14:59:26.186Z > d.setMonth(1) 1520092766186 > d 2018-03-03T15:59:26.186Z -- Parsing as Date(YYYY,MM,DD) instead avoids this kind of shuffling. To test [1] Log in to the staff client on the 31st day of the month :) [2] Change a patron's DoB to a month that does not contain 31 days. [3] Save patron and note on reload, the DoB shows the wrong value. Signed-off-by: Bill Erickson Signed-off-by: Terran McCanna Signed-off-by: Kathy Lussier --- diff --git a/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js b/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js index ea5138b78b..d11c7408b3 100644 --- a/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js +++ b/Open-ILS/web/js/ui/default/staff/circ/patron/regctl.js @@ -752,11 +752,7 @@ angular.module('egCoreMod') service.parse_dob = function(dob) { if (!dob) return null; var parts = dob.split('-'); - var d = new Date(); // always local time zone, yay. - d.setFullYear(parts[0]); - d.setMonth(parts[1] - 1); - d.setDate(parts[2]); - return d; + return new Date(parts[0], parts[1] - 1, parts[2]) } service.copy_stage_data = function(user) {