esm_calendar package

Top-level package for ESM Calendar.

Submodules

esm_calendar.esm_calendar module

Module Docstring.,..?

class esm_calendar.esm_calendar.Calendar(calendar_type=1)[source]

Bases: object

Class to contain various types of calendars.

Parameters

calendar_type (int) –

The type of calendar to use.

Supported calendar types: 0

no leap years

1

proleptic greogrian calendar (default)

n

equal months of n days

timeunits

A list of accepted time units.

Type

list of str

monthnames

A list of valid month names, using 3 letter English abbreviation.

Type

list of str

isleapyear(year)[source]

Returns a boolean testing if the given year is a leapyear

day_in_year(year)[source]

Returns the total number of days in a given year

day_in_month(year, month)[source]

Returns the total number of days in a given month for a given year (considering leapyears)

day_in_month(year, month)[source]

Finds the number of days in a given month

Parameters
  • year (int) – The year to check

  • month (int or str) – The month number or short name.

Returns

The number of days in this month, considering leapyears if needed.

Return type

int

Raises

TypeError – Raised when you give an incorrect type for month

day_in_year(year)[source]

Finds total number of days in a year, considering leapyears if the calendar type allows for them.

Parameters

year (int) – The year to check

Returns

The total number of days for this specific calendar type

Return type

int

isleapyear(year)[source]

Checks if a year is a leapyear

Parameters

year (int) – The year to check

Returns

True if the given year is a leapyear

Return type

bool

monthnames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
timeunits = ['years', 'months', 'days', 'hours', 'minutes', 'seconds']
class esm_calendar.esm_calendar.Date(indate, calendar=esm_calendar(calendar_type=1))[source]

Bases: object

A class to contain dates, also compatiable with paleo (negative dates)

Parameters
  • indate (str) –

    The date to use.

    See pyesm.core.time_control.esm_calendar.Dateformat for available formatters.

  • calendar (Calendar`, optional) – The type of calendar to use. Defaults to a greogrian proleptic calendar if nothing is specified.

year

The year

Type

int

month

The month

Type

int

day

The day

Type

int

hour

The hour

Type

int

minute

The minute

Type

int

second

The second

Type

int

_calendar

The type of calendar to use

Type

Calendar`

add(to_add)[source]

Adds another date to this one.

Parameters

to_add (Date`) – The other date to add to this one.

Returns

new_date – A new date object with the added dates

Return type

Date`

day_of_year()[source]

Gets the day of the year, counting from Jan. 1

Returns

The day of the current year.

Return type

int

format(form='SELF', givenph=None, givenpm=None, givenps=None)[source]

Needs a docstring! The following forms are accepted: + SELF: uses the format which was given when constructing the date + 0: A Date formated as YYYY

In [5]: test.format(form=1) Out[5]: ‘1850-01-01_00:00:00’

In [6]: test.format(form=2) Out[6]: ‘1850-01-01T00:00:00’

In [7]: test.format(form=3) Out[7]: ‘1850-01-01 00:00:00’

In [8]: test.format(form=4) Out[8]: ‘1850 01 01 00 00 00’

In [9]: test.format(form=5) Out[9]: ‘01 Jan 1850 00:00:00’

In [10]: test.format(form=6) Out[10]: ‘18500101_00:00:00’

In [11]: test.format(form=7) Out[11]: ‘1850-01-01_000000’

In [12]: test.format(form=8) Out[12]: ‘18500101000000’

In [13]: test.format(form=9) Out[13]: ‘18500101_000000’

In [14]: test.format(form=10) Out[14]: ‘01/01/1850 00:00:00’

classmethod from_list(_list)[source]

Creates a new Date from a list

Parameters

_list (list of ints) – A list of [year, month, day, hour, minute, second]

Returns

date – A new date of year month day, hour minute, second

Return type

Date`

classmethod fromlist(_list)

Creates a new Date from a list

Parameters

_list (list of ints) – A list of [year, month, day, hour, minute, second]

Returns

date – A new date of year month day, hour minute, second

Return type

Date`

makesense(ndate)[source]

Puts overflowed time back into the correct unit.

When manipulating the date, it might be that you have “70 seconds”, or something similar. Here, we put the overflowed time into the appropriate unit.

output(form='SELF')[source]
property sday
property sdoy
property shour
property sminute
property smonth
property ssecond
sub_date(other)[source]
sub_tuple(to_sub)[source]

Adds another date to from one.

Parameters

to_sub (Date`) – The other date to sub from this one.

Returns

new_date – A new date object with the subtracted dates

Return type

Date`

property syear
time_between(date, outformat='seconds')[source]

Computes the time between two dates

Parameters

date (date`) – The date to compare against.

Returns

Return type

??

class esm_calendar.esm_calendar.Dateformat(form=1, printhours=True, printminutes=True, printseconds=True)[source]

Bases: object

datesep = ['', '-', '-', '-', ' ', ' ', '', '-', '', '', '/']
dtsep = ['_', '_', 'T', ' ', ' ', ' ', '_', '_', '', '_', ' ']
timesep = ['', ':', ':', ':', ' ', ':', ':', '', '', '', ':']
esm_calendar.esm_calendar.date_range(start_date, stop_date, frequency)[source]
esm_calendar.esm_calendar.find_remaining_hours(seconds)

Finds the remaining full minutes of a given number of seconds

Parameters

seconds (int) – The number of seconds to allocate

Returns

The leftover seconds once new minutes have been filled.

Return type

int

esm_calendar.esm_calendar.find_remaining_minutes(seconds)[source]

Finds the remaining full minutes of a given number of seconds

Parameters

seconds (int) – The number of seconds to allocate

Returns

The leftover seconds once new minutes have been filled.

Return type

int