Skip to main content
https://circleci.com/gh/righ/typedate.svg?style=svg

Requirements

  • Python 2.7

  • Python 3.3 or later

  • Tested with 2.7, 3.7

Installation

$ pip install typedate

Types

This library provides 3 classes parsing string, and outputting object related to time.

TypeDate:

Date (and time) parser parses string. Time format, timezone and timedelta are specified when it is made.

TypeDelta:

Delta parser parses numbers with time units separeted a space. It will be interpreted as delta function arguments.

TypeZone:

Timezone parser parses timezone string.

Usage

For example, use the classes with argparse as follows:

#!/usr/bin/env python
from datetime import datetime
from typedate import TypeDate, TypeDelta, TypeZone

if __name__ == '__main__':
    import argparse
    parser = argparse.ArgumentParser()

    # datetime parsing
    parser.add_argument("--datetime1", type=TypeDate('%Y%m%d'))
    parser.add_argument("--datetime2", type=TypeDate(timezone='Asia/Tokyo'))
    parser.add_argument("--datetime3", type=TypeDate(timezone='+09:00'))
    parser.add_argument("--datetime4", type=TypeDate(timedelta='1years -2months 3days 4hours 5minute 6seconds'))

    # timezone parsing
    parser.add_argument("--timezone1", type=TypeZone())
    parser.add_argument("--timezone2", type=TypeZone())
    parser.add_argument("--timezone3", type=TypeZone(callback=lambda tz: datetime(2018, 7, 14, tzinfo=tz)))

    # timedelta parsing
    ## if python-dateutil installed, used automatically dateutil.relativedelta.relativedelta else datetime.timedelta.
    parser.add_argument("--defaultdelta", type=TypeDelta())

    ## it can be specified by cls argument.
    from datetime import timedelta
    from dateutil.relativedelta import relativedelta
    parser.add_argument("--timedelta", type=TypeDelta(cls=timedelta))
    parser.add_argument("--relativedelta", type=TypeDelta(cls=relativedelta))

    args = parser.parse_args()
    print('datetime1:\t', args.datetime1, type(args.datetime1))
    print('datetime2:\t', args.datetime2, type(args.datetime2))
    print('datetime3:\t', args.datetime3, type(args.datetime3))
    print('datetime4:\t', args.datetime4, type(args.datetime4))

    print('timezone1:\t', args.timezone1, type(args.timezone1))
    print('timezone2:\t', args.timezone2, type(args.timezone2))
    print('dt with tz3:\t', args.timezone3, type(args.timezone3))

    print('defaultdelta:\t', args.defaultdelta, type(args.defaultdelta))
    print('timedelta:\t', args.timedelta, type(args.timedelta))
    print('relativedelta:\t', args.relativedelta, type(args.relativedelta))

Saving a file like above as command.py, and execute it as follows.

$ python command.py \
  --datetime1='19880522' \
  --datetime2='2016-01-01' \
  --datetime3='2016/01/01' \
  --datetime4='01/01 00:00 2016' \
  --timezone1='-0500' \
  --timezone2='Asia/Tokyo'  \
  --timezone3='04:00' \
  --defaultdelta='1years -2months 3days 4hours 5minutes 6seconds' \
  --timedelta='3days 4hours 5minutes 6seconds' \
  --relativedelta='1years -2months 3days 4hours 5minutes 6seconds'

datetime1:       1988-05-22 00:00:00 <class 'datetime.datetime'>
datetime2:       2016-01-01 00:00:00+09:00 <class 'datetime.datetime'>
datetime3:       2016-01-01 00:00:00+09:00 <class 'datetime.datetime'>
datetime4:       2016-11-04 04:05:06 <class 'datetime.datetime'>
timezone1:       -05:00 <class 'typedate.type.zone.TzInfo'>
timezone2:       Asia/Tokyo <class 'pytz.tzfile.Asia/Tokyo'>
dt with tz3:     2018-07-14 00:00:00+04:00 <class 'datetime.datetime'>
defaultdelta:    relativedelta(years=+1, months=-2, days=+3, hours=+4, minutes=+5, seconds=+6) <class 'dateutil.relativedelta.relativedelta'>
timedelta:       3 days, 4:05:06 <class 'datetime.timedelta'>
relativedelta:   relativedelta(years=+1, months=-2, days=+3, hours=+4, minutes=+5, seconds=+6) <class 'dateutil.relativedelta.relativedelta'>

History

1.1.x

Added a callback argument to each types.

It is able to return other values using originally value.

1.0.x

  • first release

Metadata

Release files for typedate 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for typedate 1.1.1
File Size Uploaded Provenance
typedate-1.1.1.tar.gz 4.4 kB Without provenance Details

Release files / typedate-1.1.1.tar.gz

Download URL typedate-1.1.1.tar.gz
Size 4.4 kB
Tags Source
SHA-256 checksum
How to use checksums
21d55dd01065203c7011a8caccd9414b4ee2059e084fb618e4535ba3547d8ad7
BLAKE2b-256 checksum
How to use checksums
f8ee3a5ba343c017c747915843fc61cef5464753a707f010f8ac0553c26e0434
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for typedate 1.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page