From bea6d1942173a0ea0b9a5c5f2ad32d18ee0be691 Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sat, 19 Nov 2011 09:32:05 +0100 Subject: [PATCH] Possible fix for bug 892438 --- src/calibre/ebooks/metadata/book/json_codec.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/metadata/book/json_codec.py b/src/calibre/ebooks/metadata/book/json_codec.py index 28bf3178ef..a14e18569a 100644 --- a/src/calibre/ebooks/metadata/book/json_codec.py +++ b/src/calibre/ebooks/metadata/book/json_codec.py @@ -6,11 +6,12 @@ Created on 4 Jun 2010 from base64 import b64encode, b64decode import json, traceback +from datetime import datetime, time from calibre.ebooks.metadata.book import SERIALIZABLE_FIELDS from calibre.constants import filesystem_encoding, preferred_encoding from calibre.library.field_metadata import FieldMetadata -from calibre.utils.date import parse_date, isoformat, UNDEFINED_DATE +from calibre.utils.date import parse_date, isoformat, UNDEFINED_DATE, local_tz from calibre.utils.magick import Image from calibre import isbytestring @@ -22,7 +23,13 @@ def string_to_datetime(src): return parse_date(src) def datetime_to_string(dateval): - if dateval is None or dateval == UNDEFINED_DATE: + if dateval is None: + return "None" + if not isinstance(dateval, datetime): + dateval = datetime.combine(dateval, time()) + if hasattr(dateval, 'tzinfo') and dateval.tzinfo is None: + dateval = dateval.replace(tzinfo=local_tz) + if dateval <= UNDEFINED_DATE: return "None" return isoformat(dateval)