From 91be2d61b99f52fd4186f7d7ab606b994b49c6db Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Mon, 6 May 2019 17:41:31 -0400 Subject: [PATCH] LP#1831784: fix Angular's formatting of DOB field Otherwise, depending on the local time zone, the date displayed could be off a day. The 'dob' columns are currently the the _only_ database/IDL fields that are truly dates, not timestamps, hence the hard-coded exception. However, an alternative approach would be to define a new 'date' field type in the IDL. To test ------- [1] Construct an eg-grid (say, on the Angular sandbox page) that retrieves patron records. For users in North America, the birth dates are likely off by a day. [2] Apply the patch and repeat step 1. This time, the birth dates should display as entered. Sponsored-by: MassLNC Sponsored-by: Georgia Public Library Service Sponsored-by: Indiana State Library Sponsored-by: CW MARS Sponsored-by: King County Library System Signed-off-by: Galen Charlton Signed-off-by: Bill Erickson Signed-off-by: Galen Charlton --- Open-ILS/src/eg2/src/app/core/format.service.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/eg2/src/app/core/format.service.ts b/Open-ILS/src/eg2/src/app/core/format.service.ts index b0e8072a53..63aeec66f0 100644 --- a/Open-ILS/src/eg2/src/app/core/format.service.ts +++ b/Open-ILS/src/eg2/src/app/core/format.service.ts @@ -116,7 +116,15 @@ export class FormatService { if (params.datePlusTime) { fmt = this.dateTimeFormat || 'short'; } - return this.datePipe.transform(date, fmt); + let tz; + if (params.idlField === 'dob') { + // special case: since dob is the only date column that the + // IDL thinks of as a timestamp, the date object comes over + // as a UTC value; apply the correct timezone rather than the + // local one + tz = 'UTC'; + } + return this.datePipe.transform(date, fmt, tz); case 'money': return this.currencyPipe.transform(value); -- 2.11.0