changeset 3898:022ae35a9d82

tools (utils): helper `parse_xmpp_date` method: This method converts an XMPP date(time) to a unix time rel 372
author Goffi <goffi@goffi.org>
date Wed, 21 Sep 2022 22:29:54 +0200
parents 4b7106eede0c
children 1e64f1ed3ebd
files sat/tools/utils.py
diffstat 1 files changed, 19 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/sat/tools/utils.py	Wed Sep 21 22:28:20 2022 +0200
+++ b/sat/tools/utils.py	Wed Sep 21 22:29:54 2022 +0200
@@ -163,6 +163,25 @@
     )
 
 
+def parse_xmpp_date(
+    xmpp_date_str: str,
+    with_time: bool = True
+) -> float:
+    """Get timestamp from XEP-0082 datetime
+
+    @param xmpp_date_str: XEP-0082 formatted datetime or time
+    @param with_time: if True, ``xmpp_date_str`` must be a datetime, otherwise if must be
+    a time profile.
+    @return: datetime converted to unix time
+    """
+    if with_time:
+        dt = xmpp_datetime.parse_datetime(xmpp_date_str)
+    else:
+        dt = xmpp_datetime.parse_date(xmpp_date_str)
+
+    return time.mktime(dt.timetuple())
+
+
 def generatePassword(vocabulary=None, size=20):
     """Generate a password with random characters.