diff --git a/parser/parser-cpmd/cpmdparser/versions/cpmd41/mainparser.py b/parser/parser-cpmd/cpmdparser/versions/cpmd41/mainparser.py index dbc4e3640640ed0ea2fe8ce84e86357fdff2786c..3e24715bf0669460b7a21046a50f4c7c0b9e0781 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 70182d78a19782e5548274416ec7ec6a440ca3c8..a460ec94a0b469f029dcdc2df23b4a41f03de4d0 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"]