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