From 20260bf5bdf56e1bf2ce55acc6f5f93210625b0e Mon Sep 17 00:00:00 2001 From: Bruce Flynn <brucef@ssec.wisc.edu> Date: Mon, 12 Jun 2017 21:24:07 +0000 Subject: [PATCH] fix timecode date conversion --- .gitignore | 1 + edosl0util/timecode.py | 9 +++++---- setup.py | 6 ++++++ tests/test_timecode.py | 29 +++++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 tests/test_timecode.py diff --git a/.gitignore b/.gitignore index cb5757a..de10f00 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .eggs +.cache build dist env diff --git a/edosl0util/timecode.py b/edosl0util/timecode.py index 414e142..a505e6c 100644 --- a/edosl0util/timecode.py +++ b/edosl0util/timecode.py @@ -16,15 +16,16 @@ def unixtime(dt): return (UNIX_EPOCH - dt).total_seconds() -def cds_to_timestamp(days, millis, micros, epoch): +def cds_to_timestamp(days, millis, microseconds, epoch): """ CDS to unix timestamp seconds. """ - return epoch + (86400 * days) + (millis / 1000.) + (micros / 1000000.) + return epoch + (86400 * days) + (millis / 1000.) + (microseconds / 1000000.) -def cds_stamp(days, millis, micros, epoch=JPSS_EPOCH): +def cds_stamp(days, millis, microseconds, epoch=JPSS_EPOCH): """ CCSDS Day Segmented timecode to UTC datetime. """ - return JPSS_EPOCH + timedelta(days=days, microseconds=1000 * millis + micros) + return epoch + timedelta(days=days, + seconds=millis / 1000.0 + (microseconds / 1000000.)) diff --git a/setup.py b/setup.py index ec7764c..1711520 100644 --- a/setup.py +++ b/setup.py @@ -15,6 +15,12 @@ setup( install_requires=[ 'h5py', ], + extras_require={ + 'testing': [ + 'pytest', + 'pytest-cov' + ] + }, entry_points=""" [console_scripts] edosl0split = edosl0util.cli.split:main diff --git a/tests/test_timecode.py b/tests/test_timecode.py new file mode 100644 index 0000000..9d2633c --- /dev/null +++ b/tests/test_timecode.py @@ -0,0 +1,29 @@ +from datetime import datetime, timedelta +from edosl0util import timecode + + +def test_unixtime(): + assert timecode.unixtime(timecode.UNIX_EPOCH) == 0 + + +def test_cds_to_timestamp(): + epoch = 0 + + secs = timecode.cds_to_timestamp(0, 0, 0, epoch) + assert secs == 0 + + secs = timecode.cds_to_timestamp(0, 0, 999, epoch) + assert secs == 0.000999 + + secs = timecode.cds_to_timestamp(1, 1, 999, epoch) + assert secs == 86400.001999 + + +def test_cds_stamp(): + epoch = timecode.UNIX_EPOCH + + assert timecode.cds_stamp(0, 0, 0, epoch) == timecode.UNIX_EPOCH + + assert timecode.cds_stamp(0, 0, 999, epoch) == datetime(1970, 1, 1, 0, 0, 0, 999) + + assert timecode.cds_stamp(1, 1, 999, epoch) == datetime(1970, 1, 2, 0, 0, 0, 1999) -- GitLab