Source code for polyfemos.almanac.utils

# -*- coding: utf-8 -*-
# -----------------------------------------------------------------------------
# This file is part of Polyfemos.
#
# Polyfemos is free software: you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation, either version 3 of the License, or any later version.
#
# Polyfemos is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
# details.
#
# You should have received a copy of the GNU Lesser General Public License and
# GNU General Public License along with Polyfemos. If not, see
# <https://www.gnu.org/licenses/>.'
#
# Author: Henrik Jänkävaara
# -----------------------------------------------------------------------------
"""
Collection of miscellanous date functions

:copyright:
    2019, University of Oulu, Sodankyla Geophysical Observatory
:license:
    GNU Lesser General Public License v3.0 or later
    (https://spdx.org/licenses/LGPL-3.0-or-later.html)
"""
from datetime import date

from obspy import UTCDateTime

from polyfemos.parser import typeoperator as to


[docs]def parse_date(datestr): """ If empty ``datestr`` is give, today is returned :type datestr: str or :class:`~datetime.date` or :class:`~obspy.core.utcdatetime.UTCDateTime` :param datestr: date in format 'YEAR-MONTH-DAY' or 'YEAR-JULDAY' :rtype: :class:`~obspy.core.utcdatetime.UTCDateTime` :return: """ if not datestr: return UTCDateTime.now() if isinstance(datestr, UTCDateTime): return datestr if isinstance(datestr, date): return UTCDateTime(str(datestr)) datetuple = [to.int_(x) for x in datestr.split("-")] if any(x is None for x in datetuple): return None if len(datetuple) == 2: return UTCDateTime("{}{:0>3}".format(*datetuple)) return to.utcdatetime(datestr)
[docs]def get_jY(date_): r""" :type date\_: :class:`~datetime.date` or :class:`~obspy.core.utcdatetime.UTCDateTime`. :param date\_: :rtype: int, int :return: the day of the year and the year of given ``date_`` """ if isinstance(date_, UTCDateTime): return date_.julday, date_.year elif isinstance(date_, date): return date_.timetuple().tm_yday, date_.year return None, None