Documentation

Functions

cookies_utilities.copy_datetime

cookies_utilities.copy_datetime(dt, options={})

Create a copy of a datetime.datetime object.

Parameters:
  • dt (datetime.datetime) – The original object.

  • options (dict) – If you wish to overwrite certain fields, please specify them using this dictionary (optional). The keys must be in [‘year’, ‘month’, ‘day’, ‘hour’, ‘minute’, ‘second’, ‘microsecond’, ‘tzinfo’, ‘fold’].

Return type:

datetime.datetime

Example

import cookies_utilities as cu
import datetime

dt = datetime.datetime.strptime('2016-07-01 02:15:00', '%Y-%m-%d %H:%M:%S')
dt_copy = cu.copy_datetime(dt, {'minute': 0})  # --> 2016-07-01 02:00:00

cookies_utilities.get_dates

cookies_utilities.get_dates(start='2016-07-01 02:00:00', end='2016-07-02 01:00:00', format='%Y-%m-%d %H:%M:%S', delta={'days': 0, 'hours': 1, 'minutes': 0, 'weeks': 0}, geniter=False, cast_str=True, format_out=None)

Returns a list of times from the ‘start’ time to the ‘end’ time, incremented by ‘delta’. Please ensure ‘delta’ is greater than or equal to 1 microsecond.

If you’re using the result as an iterator, it is recommended to set geniter=True.

Parameters:
  • start (string) – Start time string.

  • end (string) – End time string (inclusive).

  • format (string) – Conversion format for datetime.strptime.

  • delta (dict) – Timedelta as args for datetime.timedelta (>= 1 microsecond).

  • geniter (bool) – Whether to return as a generator iterator (default False).

  • cast_str (bool) – Whether to convert output to string (default True).

  • format_out (string) – Conversion format for output (default same to format).

Return type:

list (or generator iterator) of string (or datetime.datetime)

Example

An example of incrementing by one day.

import cookies_utilities as cu
dates = cu.get_dates(
    start='2016/07/01', end='2016/07/03', format='%Y/%m/%d',
    delta={'days': 1}, format_out='%Y-%m-%d')
print(dates)
['2016-07-01', '2016-07-02', '2016-07-03']

An example of incrementing by 20 minutes.

import cookies_utilities as cu
dates = cu.get_dates(
    start='2016-07-01 02:00:00', end='2016-07-01 03:00:00',
    format='%Y-%m-%d %H:%M:%S',
    delta={'minutes': 20})
print(dates)
['2016-07-01 02:00:00', '2016-07-01 02:20:00', '2016-07-01 02:40:00', '2016-07-01 03:00:00']

An example of retrieving as a generator iterator.

import cookies_utilities as cu
dates = cu.get_dates(
    start='2016/07/01', end='2016/07/03', format='%Y/%m/%d',
    delta={'days': 1}, geniter=True)
print(type(dates))
for date in dates:
    print(date)
<class 'generator'>
2016/07/01
2016/07/02
2016/07/03

cookies_utilities.convert_time_to_feature

cookies_utilities.convert_time_to_feature(dt, format='%Y-%m-%d %H:%M:%S', period='day', ceiling=None)

Convert a time to a feature value between 0 and 1. The return feature value represents how much of a period has passed.

For example, if the period is 1 day, a feature value of noon is 0.5.

Note 1: When setting the period to a month, the cycle is considered as 31 days regardless of the actual number of days in that month. This is to ensure that the feature value for ‘the 5th day of any month’ is consistent.

Note 2: When setting the period to a year, the cycle is considered as 366 days regardless of the actual number of days in that year. This is done to ensure that the feature value for ‘the 5th day of any year’ remains the same, regardless of the specific year.

Parameters:
  • dt (string) – A time string.

  • format (string) – Conversion format for datetime.strptime. If you set this argument to None, we expect ‘dt’ to originally be datetime.datetime object.

  • period (string) – A time period to convert a time to a feature value. This must be in [‘year’, ‘month’, ‘week’, ‘day’, ‘hour’, ‘minute’, ‘second’].

  • ceiling (string) – If you want to round the time when calculating the feature value, specify the rounding granularity in this argument (optional). This must be in [‘year’, ‘month’, ‘day’, ‘hour’, ‘minute’, ‘second’].

Return type:

float

import cookies_utilities as cu

feature_value = cu.convert_time_to_feature(
    dt='2023-01-02 03:40:50', format='%Y-%m-%d %H:%M:%S',
    period='day', ceiling='hour')
#  --> 0.125  ( 3:00 am is 12.5% of the day )

feature_value = cu.convert_time_to_feature(
    dt='2023-01-02 03:40:50', format='%Y-%m-%d %H:%M:%S',
    period='year', ceiling='day')
#  --> 0.002732  ( 1.0 / 366.0 )

feature_value = cu.convert_time_to_feature(
    dt='2023-01-02 03:40:50', format='%Y-%m-%d %H:%M:%S',
    period='month', ceiling='day')
#  --> 0.032258  ( 1.0 / 31.0 )

feature_value = cu.convert_time_to_feature(
    dt='2023-01-02 03:40:50', format='%Y-%m-%d %H:%M:%S',
    period='week', ceiling='hour')
#  --> 0.017857  ( 0.125 / 7.0 )

feature_value = cu.convert_time_to_feature(
    dt='2023-01-02 03:40:50', format='%Y-%m-%d %H:%M:%S',
    period='hour', ceiling='minute')
#  --> 0.666667  ( 40.0 / 60.0 )

feature_value = cu.convert_time_to_feature(
    dt='2023-01-02 03:40:50', format='%Y-%m-%d %H:%M:%S',
    period='minute')
#  --> 0.833333  ( 50.0 / 60.0 )

Classes

cookies_utilities.Stopwatch

class cookies_utilities.Stopwatch

Stopwatch for measuring processing time.

press(key='')

Press the stopwatch.

Parameters:

key (string) – The idenficator for the time (optional).

show()

Show lap times.

Example

import cookies_utilities as cu
sw = cu.Stopwatch()
sw.press('train start')
# train
sw.press('train end')
# test
sw.press('test end')
sw.show()
time1 (train start - train end): 2.000s
time2 (train end - test end): 1.000s
total: 3.000s