From: Marc Englund Date: Thu, 30 Aug 2007 13:27:17 +0000 (+0000) Subject: Fixed date range comparison X-Git-Tag: 6.7.0.beta1~6046 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=cef66def0b0c4ef78051ba81154a7b6dc9f14c52;p=vaadin-framework.git Fixed date range comparison svn changeset:2159/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/DateTimeService.java b/src/com/itmill/toolkit/terminal/gwt/client/DateTimeService.java index 10e2a31837..62ff15d0ac 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/DateTimeService.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/DateTimeService.java @@ -201,43 +201,42 @@ public class DateTimeService { e = rangeEnd; s = rangeStart; } - if (date.getYear() < s.getYear() || date.getYear() > e.getYear()) { - return false; - } else if (resolution == RESOLUTION_YEAR) { - return true; - } - if (date.getMonth() < s.getMonth() || date.getMonth() > e.getMonth()) { - return false; - } else if (resolution == RESOLUTION_MONTH) { - return true; - } - if (date.getDate() < s.getDate() || date.getDate() > e.getDate()) { - return false; - } else if (resolution == RESOLUTION_DAY) { - return true; - } - if (date.getHours() < s.getHours() || date.getHours() > e.getHours()) { - return false; - } else if (resolution == RESOLUTION_HOUR) { - return true; - } - if (date.getMinutes() < s.getMinutes() - || date.getMinutes() > e.getMinutes()) { - return false; - } else if (resolution == RESOLUTION_MIN) { - return true; - } - if (date.getSeconds() < s.getSeconds() - || date.getSeconds() > e.getSeconds()) { - return false; - } else if (resolution == RESOLUTION_SEC) { - return true; - } - if (date.getTime() < s.getTime() || date.getTime() > e.getTime()) { - return false; - } else { - return true; - } + long start = s.getYear()*10000000000l; + long end = e.getYear()*10000000000l; + long target = date.getYear()*10000000000l; + + if (resolution == RESOLUTION_YEAR) { + return (start<=target&&end>=target); + } + start += s.getMonth() * 100000000; + end += e.getMonth() * 100000000; + target += date.getMonth() * 100000000; + if (resolution == RESOLUTION_MONTH) { + return (start<=target&&end>=target); + } + start += s.getDate() * 1000000; + end += e.getDate() * 1000000; + target += date.getDate() * 1000000; + if (resolution == RESOLUTION_DAY) { + return (start<=target&&end>=target); + } + start += s.getHours() * 10000; + end += e.getHours() * 10000; + target += date.getHours() * 10000; + if (resolution == RESOLUTION_HOUR) { + return (start<=target&&end>=target); + } + start += s.getMinutes() * 100; + end += e.getMinutes() * 100; + target += date.getMinutes() * 100; + if (resolution == RESOLUTION_MIN) { + return (start<=target&&end>=target); + } + start += s.getSeconds(); + end += e.getSeconds(); + target += date.getSeconds(); + return (start<=target&&end>=target); + } private static int getDayInt(Date date) {