diff --git a/metobs/data/__init__.py b/metobs/data/__init__.py index f7304d1b32cfd6c0c75fd08214f5f4848b2e1905..69101057344fdce1cdd3770dc8ddc6dbc32b361c 100644 --- a/metobs/data/__init__.py +++ b/metobs/data/__init__.py @@ -1,4 +1,4 @@ -from .time import to_unix_timestamp, hhmm_to_offset +from .time import to_unix_timestamp, hhmm_to_offset, trunc_datetime from .units import * from .calc import * diff --git a/metobs/data/solar_position.py b/metobs/data/solar_position.py index da8167639c96848aad47319ed73ab0a9d91c379c..5954e470c61e726aa97adc6ba4d7e6d27d055666 100644 --- a/metobs/data/solar_position.py +++ b/metobs/data/solar_position.py @@ -68,8 +68,6 @@ https://cvs.ssec.wisc.edu/cgi-bin/cvsweb.cgi/java/tower/SolarPosition.java """ __docformat__ = 'restructuredtext en' -__version__ = '$Revision: 1.6 $' -# $Source: /cvsroot/TOOLS/dev/metobs/python/data/metobs/data/solar_position.py,v $ from metobs.data import NaN, util import math diff --git a/metobs/data/time.py b/metobs/data/time.py index a5941134c3b8d496c88c22f47e996528343d6d6d..ba850b596af30940bf2e3cfdba42e52adcb15a4f 100644 --- a/metobs/data/time.py +++ b/metobs/data/time.py @@ -1,6 +1,19 @@ -from datetime import timedelta +from datetime import timedelta, datetime from calendar import timegm +def trunc_datetime(dt, interval): + """Truncate a datetime to the nearest time on interval with basetime + of epoch. + + >>> v = trunc_datetime(datetime(2014, 5, 20, 0, 0, 4), timedelta(seconds=5) + >>> assert v == datetime(2014, 5, 20, 0, 0, 0) + >>> v = trunc_datetime(datetime(2014, 5, 20, 0, 0, 1), 5) + >>> assert v == datetime(2014, 5, 20, 0, 0, 0) + """ + if not isinstance(interval, timedelta): + interval = timedelta(seconds=interval) + utime = to_unix_timestamp(dt) + return datetime.utcfromtimestamp(utime - utime % interval.total_seconds()) def to_unix_timestamp(dtval): """Convert a datetime to a unix timestamp.