From 09dbbad06e4f9e9cfa4ec04fc637e69c04327c1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20D=C3=B6rfelt?= Date: Fri, 12 Apr 2024 17:20:18 +0200 Subject: [PATCH] group common datetime functions --- src/apps/tiddlywiki.py | 3 ++- src/apps/todoist.py | 3 ++- src/common.py | 20 ++++++++++++-------- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/apps/tiddlywiki.py b/src/apps/tiddlywiki.py index 0db1979..07d6590 100644 --- a/src/apps/tiddlywiki.py +++ b/src/apps/tiddlywiki.py @@ -5,6 +5,7 @@ from pathlib import Path import json +import common import intermediate_format as imf @@ -13,7 +14,7 @@ def tiddlywiki_to_unix(tiddlywiki_time: str) -> int: """Format: https://tiddlywiki.com/static/DateFormat.html""" - return int(datetime.strptime(tiddlywiki_time, "%Y%m%d%H%M%S%f").timestamp() * 1000) + return common.datetime_to_ms(datetime.strptime(tiddlywiki_time, "%Y%m%d%H%M%S%f")) def split_tags(tag_string: str) -> list[str]: diff --git a/src/apps/todoist.py b/src/apps/todoist.py index bb3f977..7d1fb96 100644 --- a/src/apps/todoist.py +++ b/src/apps/todoist.py @@ -5,6 +5,7 @@ import logging from pathlib import Path +import common import intermediate_format as imf @@ -118,7 +119,7 @@ def convert(file_: Path, parent: imf.Notebook): "source_application": Path(__file__).stem, } if (due_date := parse_date(row["DATE"])) is not None: - note_data["todo_due"] = int(due_date.timestamp() * 1000) + note_data["todo_due"] = common.datetime_to_ms(due_date) tags_string = labels + [f"todoist-priority-{row['PRIORITY']}"] joplin_note = imf.Note( diff --git a/src/common.py b/src/common.py index 9c17d6d..99ce4ea 100644 --- a/src/common.py +++ b/src/common.py @@ -1,6 +1,6 @@ """Common functions.""" -from datetime import datetime +import datetime as dt import re @@ -16,16 +16,20 @@ def get_wikilink_links(text: str): return WIKILINK_LINK_REGEX.findall(text) -def current_unix_ms(): - return int(datetime.now().timestamp() * 1000) +def datetime_to_ms(datetime_: dt.datetime) -> int: + return int(datetime_.timestamp() * 1000) -def date_to_unix_ms(date_): +def current_unix_ms() -> int: + return datetime_to_ms(dt.datetime.now()) + + +def date_to_unix_ms(date_: dt.date) -> int: # https://stackoverflow.com/a/61886944/7410886 - return int( - datetime(year=date_.year, month=date_.month, day=date_.day).timestamp() * 1000 + return datetime_to_ms( + dt.datetime(year=date_.year, month=date_.month, day=date_.day) ) -def iso_to_unix_ms(iso_time): - return int(datetime.fromisoformat(iso_time).timestamp() * 1000) +def iso_to_unix_ms(iso_time: str) -> int: + return datetime_to_ms(dt.datetime.fromisoformat(iso_time))