From 7a7c229db5044712ad44ad5a75ca7a65cd6d9105 Mon Sep 17 00:00:00 2001 From: Thomas Berezansky Date: Fri, 2 Nov 2012 09:53:30 -0400 Subject: [PATCH] Fix backdate near DST changes When the due date and the backdate date are on opposite sides of a DST boundary we were getting an hour off on the checkin time (using the original due date's time). This commit changes it so that instead we just set the hour and minute values on the backdate date to the due date's versions, leaving the time zone alone. Signed-off-by: Thomas Berezansky Signed-off-by: Lebbeous Fogle-Weekley --- .../src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm index 83a46a84d5..273978eb96 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm @@ -3500,7 +3500,9 @@ sub checkin_handle_backdate { my $bd = cleanse_ISO8601($self->backdate); my $original_date = DateTime::Format::ISO8601->new->parse_datetime(cleanse_ISO8601($self->circ->due_date)); my $new_date = DateTime::Format::ISO8601->new->parse_datetime($bd); - $bd = cleanse_ISO8601($new_date->ymd . 'T' . $original_date->strftime('%T%z')); + $new_date->set_hour($original_date->hour()); + $new_date->set_minute($original_date->minute()); + $bd = cleanse_ISO8601($new_date->datetime()); $self->backdate($bd); return undef; -- 2.43.2