* Added method idatetime.join_values() .

master
Wirawan Purwanto 10 years ago
parent 86e4e8fd51
commit 1c5ec91b64
  1. 8
      TESTS/test_datetime.py
  2. 21
      datetime0_idt.py

@ -6,7 +6,7 @@ from time import localtime, gmtime, strftime
from wpylib.datetime0_idt import idatetime
from wpylib.datetime import utime_to_iso
from pprint import pprint
def test_idt_01():
@ -17,6 +17,12 @@ def test_idt_01():
idt = idatetime(iidt)
print "integer value = %+18d" % idt.idt
print "iso8601 format = %s" % idt.str_iso8601()
R = idt.split_values()
print("split values:")
pprint(R.__dict__)
iidt_rejoined = idt.join_values(R)
print("iidt rejoined = %+18d" % iidt_rejoined)
def test_u2i_01():

@ -32,6 +32,7 @@ where:
The time is always expressed in terms of UTC to eliminate ambiguity of
time zone, daylight savings time, etc.
CAVEAT: The resolution of the time is only on the order of millisecond.
Linux OS, for example, allows resolution down to nanoseconds!
This is a 17-decimal-digit integer, which fits in a 64-bit range (9.22e+18).
@ -71,6 +72,26 @@ class idatetime(object):
R.microsecond = R.millisecond * 1000
return R
def join_values(self, R=None):
"""Joins the values contained in data structure 'R' to create a
composite integer date.
This is the converse of function 'split_values'.
"""
if R is None:
R = self.R
if hasattr(R, 'microsecond'):
millisecond = R.microsecond // 1000
elif hasattr(R, 'millisecond'):
millisecond = R.millisecond
return R.year * 10000000000000 \
+ R.month * 100000000000 \
+ R.day * 1000000000 \
+ R.hour * 10000000 \
+ R.minute * 100000 \
+ R.second * 1000 \
+ millisecond
def to_datetime(self):
"""Converts the object value to standard python datetime object.
"""

Loading…
Cancel
Save