From 4f8676f10e25189620612c9318c2e461c05c2eb5 Mon Sep 17 00:00:00 2001
From: Lauri Himanen <lauri.himanen@aalto.fi>
Date: Wed, 13 Jul 2016 10:07:01 +0300
Subject: [PATCH] Removed the use of the datetime.timestamp() function since
 python2 doesn't support it.

---
 .../cpmdparser/versions/cpmd41/mainparser.py     | 16 ++++++++++++----
 test/unittests/cpmd_4.1/run_tests.py             |  2 +-
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/parser/parser-cpmd/cpmdparser/versions/cpmd41/mainparser.py b/parser/parser-cpmd/cpmdparser/versions/cpmd41/mainparser.py
index dbc4e36..3e24715 100644
--- a/parser/parser-cpmd/cpmdparser/versions/cpmd41/mainparser.py
+++ b/parser/parser-cpmd/cpmdparser/versions/cpmd41/mainparser.py
@@ -7,6 +7,8 @@ from .commonparser import CPMDCommonParser
 from .inputparser import CPMDInputParser
 import re
 import logging
+import time
+import pytz
 import datetime
 import numpy as np
 logger = logging.getLogger("nomad")
@@ -306,13 +308,19 @@ class CPMDMainParser(MainHierarchicalParser):
     #=======================================================================
     # misc. functions
     def timestamp_from_string(self, timestring):
+        """Returns the seconds since epoch for the given date and the wall
+        clock seconds for the given wall clock time. Assumes UTC timezone.
+        """
         timestring = timestring.strip()
-        date, time = timestring.split()
+        date, clock_time = timestring.split()
         year, month, day = [int(x) for x in date.split("-")]
-        hour, minute, second, msec = [float(x) for x in re.split("[:.]", time)]
-        date_stamp = datetime.datetime(year, month, day).timestamp()
+        hour, minute, second, msec = [float(x) for x in re.split("[:.]", clock_time)]
+
+        date_obj = datetime.datetime(year, month, day, tzinfo=pytz.utc)
+        date_timestamp = (date_obj - datetime.datetime(1970, 1, 1, tzinfo=pytz.utc)).total_seconds()
+
         wall_time = hour*3600+minute*60+second+0.001*msec
-        return date_stamp, wall_time
+        return date_timestamp, wall_time
 
     def vector_from_string(self, vectorstr):
         """Returns a numpy array from a string comprising of floating
diff --git a/test/unittests/cpmd_4.1/run_tests.py b/test/unittests/cpmd_4.1/run_tests.py
index 70182d7..a460ec9 100644
--- a/test/unittests/cpmd_4.1/run_tests.py
+++ b/test/unittests/cpmd_4.1/run_tests.py
@@ -113,7 +113,7 @@ class TestSinglePoint(unittest.TestCase):
 
     def test_time_run_date_start(self):
         result = self.results["time_run_date_start"]
-        self.assertEqual(result, 1467579600.0)
+        self.assertEqual(result, 1467590400.0)
 
     def test_time_run_wall_start(self):
         result = self.results["time_run_wall_start"]
-- 
GitLab