Skip to main content

Because why are we dealing with timezones?

Project description

datetimeutc

A Python datetime wrapper so we can forget about timezones

A lightweight datetime utility library which wraps around the standard datetime module, with features from dateutil and pytz.

Its purpose is to minimize the effort to convert datetime to/from UTC, a task I found myself doing too often while scaling web services and apps internationally.

This wrapper is designed under these datetime philosophy:

  1. datetime should always be timezone aware

  2. datetime should always be handled and stored in UTC time

  3. datetime should always default to UTC time

  4. datetime should not contain server local time

  5. timezone conversions should be done on client side

Install

$ pip install datetimeutc

Usage

The library provides thinly wrappers of datetime classes, e.g. datetime, date, and time.

Instances of these class are created with timezone awareness in UTC time. Users can also pass in None or other timezone, which the library will automatically converts into UTC time.

>>> from datetimeutc import Datetime, Date, Time
>>> import pytz
>>> d = Datetime(2016, 3, 21, 9, 20, 40)
Datetime(2016, 3, 21, 9, 20, 40, tzinfo=<UTC>)
>>> Datetime(2016, 3, 21, 9, 20, 40, tzinfo=pytz.timezone('US/Eastern'))
Datetime(2016, 3, 21, 14, 16, 40, tzinfo=<UTC>)

Functions of datetime are all supported.

>>> from datetimeutc import Datetime, Date, Time
>>> Datetime.now()
Datetime(2016, 3, 21, 9, 20, 40, 816025, tzinfo=<UTC>)
>>> Datetime.now().dst()
datetime.timedelta(0)
>>> Datetime.now().timetuple()
time.struct_time(tm_year=2016, tm_mon=3, tm_mday=21, tm_hour=9, tm_min=7, tm_sec=47, tm_wday=0, tm_yday=81, tm_isdst=0)
>>> Datetime.now().toordinal()
736044
>>> Datetime.now().isoweekday()
1
>>> Datetime.now().isoformat()
'2016-03-21T09:08:17.488494+00:00'
>>> Datetime.strptime('2016-03-21','%Y-%m-%d')
Datetime(2016, 3, 21, 0, 0, tzinfo=<UTC>)
>>> datetimeutc.Datetime(2016, 3, 21, 9, 20, 40).astimezone(pytz.timezone('US/Eastern'))
datetime.datetime(2016, 3, 21, 5, 20, 40, tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>)

Utilities

Other datetime functions are available for common tasks, e.g. converting to/from javascript timestamp

>>> import datetimeutc, datetime
>>> datetimeutc.to_utc(datetime.datetime.now())
datetime.datetime(2016, 3, 21, 9, 31, 8, 455166, tzinfo=<UTC>)
>>> d = datetimeutc.Datetime(2016, 3, 21, 9, 20, 40)
>>> d
Datetime(2016, 3, 21, 9, 20, 40, tzinfo=<UTC>)
>>> d.timestamp
1458552040
>>> d.jstimestamp
1458552040000.0
>>> datetimeutc.Datetime.from_jstimestamp(d.jstimestamp)
Datetime(2016, 3, 21, 9, 20, 40, tzinfo=<UTC>)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

datetimeutc-0.1.1.tar.gz (1.9 kB view details)

Uploaded Source

File details

Details for the file datetimeutc-0.1.1.tar.gz.

File metadata

  • Download URL: datetimeutc-0.1.1.tar.gz
  • Upload date:
  • Size: 1.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for datetimeutc-0.1.1.tar.gz
Algorithm Hash digest
SHA256 8c15ca1be628ab27019077e9c08de2c2be3cf40762eaa59d7b2a37370cd8b8d1
MD5 a1c16ccdcb5e799377a4e0800d847324
BLAKE2b-256 9d54a643836522896572896255950f6426ba84a4488325cb1dbbb28532ed852e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page