diff --git a/jrnl/Journal.py b/jrnl/Journal.py index 92a6774f..f562a4c7 100644 --- a/jrnl/Journal.py +++ b/jrnl/Journal.py @@ -8,6 +8,7 @@ from . import time import codecs import re from datetime import datetime +import dateutil.parser import sys try: from Crypto.Cipher import AES @@ -112,6 +113,16 @@ class Journal(object): def _parse(self, journal_txt): """Parses a journal that's stored in a string and returns a list of entries""" + def get_date_length(myline): + tmpdate='' + for i in [x for x in myline.split(' ') ]: + try: + dateutil.parser.parse(tmpdate + ' ' + i) + tmpdate = tmpdate + ' ' + i + except: + break + return len(tmpdate.strip()) + # Entries start with a line that looks like 'date title' - let's figure out how # long the date will be by constructing one date_length = len(datetime.today().strftime(self.config['timeformat'])) @@ -123,6 +134,7 @@ class Journal(object): for line in journal_txt.splitlines(): line = line.rstrip() try: + date_length=get_date_length(line) # try to parse line as date => new entry begins new_date = datetime.strptime(line[:date_length], self.config['timeformat'])