Source code for pyfvcom2.date_utils

from datetime import datetime, timedelta


[docs] def create_datetime_array( start_datetime: datetime, end_datetime: datetime, delta: timedelta ) -> list[datetime]: """Create an array of datetime objects from start to end with a given time delta. Args: start_datetime (datetime): Start datetime. end_datetime (datetime): End datetime. delta (timedelta): Time delta between consecutive datetimes. Returns: list[datetime]: List of datetime objects. """ date_times = [] current_datetime = start_datetime while current_datetime <= end_datetime: date_times.append(current_datetime) current_datetime += delta return date_times
[docs] def round_time(datetime_raw, rounding_interval=60): """Apply rounding to datetime objects Rounding is sometimes required when simulation times are written to file with limited precision. Parameters ---------- datetime_raw: List, Datetime List of datetime objects to which rounding should be applied rounding_interval: int, optional No. of seconds to round to (default 60, or one minute) Returns ------- datetime_rounded: List, Datetime List of rounded datetime objects """ datetime_rounded = [] for dt in datetime_raw: seconds = (dt - dt.min).seconds rounding = (seconds + rounding_interval/2) // rounding_interval * rounding_interval datetime_rounded.append(dt + timedelta(0,rounding-seconds,-dt.microsecond)) return datetime_rounded