diff --git a/src/calibre/db/tests/reading.py b/src/calibre/db/tests/reading.py index 1769045499..9feb4277b1 100644 --- a/src/calibre/db/tests/reading.py +++ b/src/calibre/db/tests/reading.py @@ -293,8 +293,7 @@ class ReadingTest(BaseTest): old = LibraryDatabase2(self.library_path) oldvals = {query:set(old.search_getting_ids(query, '')) for query in ( # Date tests - # 'date:9/6/2011', - 'date:true', 'date:false', 'pubdate:1/9/2011', + 'date:9/6/2011', 'date:true', 'date:false', 'pubdate:1/9/2011', '#date:true', 'date:<100_daysago', 'date:>9/6/2011', '#date:>9/1/2011', '#date:=2011', diff --git a/src/calibre/library/caches.py b/src/calibre/library/caches.py index 7c57b168f9..6606e16eda 100644 --- a/src/calibre/library/caches.py +++ b/src/calibre/library/caches.py @@ -293,6 +293,8 @@ class ResultCache(SearchQueryParser): # {{{ will almost never be correct. ''' def relop_eq(db, query, field_count): + if db.tzinfo != query.tzinfo: + db = db.astimezone(tz=query.tzinfo) if db.year == query.year: if field_count == 1: return True @@ -303,6 +305,8 @@ class ResultCache(SearchQueryParser): # {{{ return False def relop_gt(db, query, field_count): + if db.tzinfo != query.tzinfo: + db = db.astimezone(tz=query.tzinfo) if db.year > query.year: return True if field_count > 1 and db.year == query.year: @@ -312,6 +316,8 @@ class ResultCache(SearchQueryParser): # {{{ return False def relop_lt(db, query, field_count): + if db.tzinfo != query.tzinfo: + db = db.astimezone(tz=query.tzinfo) if db.year < query.year: return True if field_count > 1 and db.year == query.year: @@ -321,12 +327,18 @@ class ResultCache(SearchQueryParser): # {{{ return False def relop_ne(db, query, field_count): + if db.tzinfo != query.tzinfo: + db = db.astimezone(tz=query.tzinfo) return not relop_eq(db, query, field_count) def relop_ge(db, query, field_count): + if db.tzinfo != query.tzinfo: + db = db.astimezone(tz=query.tzinfo) return not relop_lt(db, query, field_count) def relop_le(db, query, field_count): + if db.tzinfo != query.tzinfo: + db = db.astimezone(tz=query.tzinfo) return not relop_gt(db, query, field_count) self.date_search_relops = { @@ -417,7 +429,7 @@ class ResultCache(SearchQueryParser): # {{{ continue v = item[loc] if isinstance(v, (bytes, str)): - v = parse_date(v) + v = parse_date(v, as_utc=False) if relop(v, qd, field_count): matches.add(item[0]) return matches