======== #1 properties: unixtime, yday, wday and week ========

<datetime:2013-01-01T00:00:00Z>, unixtime=1356998400, yday=1, wday=2, week=tuesday
<datetime:2013-02-01T00:00:00Z>, unixtime=1359676800, yday=32, wday=5, week=friday
<datetime:2013-03-01T00:00:00Z>, unixtime=1362096000, yday=60, wday=5, week=friday
<datetime:2013-04-01T00:00:00Z>, unixtime=1364774400, yday=91, wday=1, week=monday
<datetime:2013-05-01T00:00:00Z>, unixtime=1367366400, yday=121, wday=3, week=wednesday
<datetime:2013-06-01T00:00:00Z>, unixtime=1370044800, yday=152, wday=6, week=saturday
<datetime:2013-07-01T00:00:00Z>, unixtime=1372636800, yday=182, wday=1, week=monday
<datetime:2013-08-01T00:00:00Z>, unixtime=1375315200, yday=213, wday=4, week=thursday
<datetime:2013-09-01T00:00:00Z>, unixtime=1377993600, yday=244, wday=0, week=sunday
<datetime:2013-10-01T00:00:00Z>, unixtime=1380585600, yday=274, wday=2, week=tuesday
<datetime:2013-11-01T00:00:00Z>, unixtime=1383264000, yday=305, wday=5, week=friday
<datetime:2013-12-01T00:00:00Z>, unixtime=1385856000, yday=335, wday=0, week=sunday
<datetime:2013-01-21T00:00:00Z>, unixtime=1358726400, yday=21, wday=1, week=monday
<datetime:2013-02-21T00:00:00Z>, unixtime=1361404800, yday=52, wday=4, week=thursday
<datetime:2013-03-21T00:00:00Z>, unixtime=1363824000, yday=80, wday=4, week=thursday
<datetime:2013-04-21T00:00:00Z>, unixtime=1366502400, yday=111, wday=0, week=sunday
<datetime:2013-05-21T00:00:00Z>, unixtime=1369094400, yday=141, wday=2, week=tuesday
<datetime:2013-06-21T00:00:00Z>, unixtime=1371772800, yday=172, wday=5, week=friday
<datetime:2013-07-21T00:00:00Z>, unixtime=1374364800, yday=202, wday=0, week=sunday
<datetime:2013-08-21T00:00:00Z>, unixtime=1377043200, yday=233, wday=3, week=wednesday
<datetime:2013-09-21T00:00:00Z>, unixtime=1379721600, yday=264, wday=6, week=saturday
<datetime:2013-10-21T00:00:00Z>, unixtime=1382313600, yday=294, wday=1, week=monday
<datetime:2013-11-21T00:00:00Z>, unixtime=1384992000, yday=325, wday=4, week=thursday
<datetime:2013-12-21T00:00:00Z>, unixtime=1387584000, yday=355, wday=6, week=saturday
<datetime:2012-12-31T00:00:00Z>, unixtime=1356912000, yday=366, wday=1, week=monday
<datetime:2013-12-31T00:00:00Z>, unixtime=1388448000, yday=365, wday=2, week=tuesday

======== #2 subtraction between datetime instances ========

<timedelta:0days,0secs(00:00:00),0usecs>
<timedelta:366days,0secs(00:00:00),0usecs>
<timedelta:731days,0secs(00:00:00),0usecs>
<timedelta:1096days,0secs(00:00:00),0usecs>
<timedelta:1461days,0secs(00:00:00),0usecs>
<timedelta:1827days,0secs(00:00:00),0usecs>
<timedelta:2192days,0secs(00:00:00),0usecs>
<timedelta:2557days,0secs(00:00:00),0usecs>
<timedelta:2922days,0secs(00:00:00),0usecs>
<timedelta:3288days,0secs(00:00:00),0usecs>

======== #3 unixtime property ========

datetime(2011, 1, 10, 8, 3, 0, 0, 0).unixtime .. 1294646580
datetime(2001, 9, 9, 1, 46, 40, 0, 0).unixtime .. 1000000000
datetime(2009, 2, 13, 23, 31, 30, 0, 0).unixtime .. 1234567890

======== #4 datetime.parse() ========

datetime.parse('Sun, 06 Nov 1994 08:49:37 -0900') .. <datetime:1994-11-06T08:49:37-09:00>
datetime.parse('Sun, 06 Nov 1994 08:49:37 +0900') .. <datetime:1994-11-06T08:49:37+09:00>
datetime.parse('Sun, 06 Nov 1994 08:49:37 +0845') .. <datetime:1994-11-06T08:49:37+08:45>
datetime.parse('Sun, 06 Nov 1994 08:49:37 +1245') .. <datetime:1994-11-06T08:49:37+12:45>
datetime.parse('Sun, 06 Nov 1994 08:49:37 -0930') .. <datetime:1994-11-06T08:49:37-09:30>
datetime.parse('Sun, 06 Nov 1994 08:49:37 GMT') .. <datetime:1994-11-06T08:49:37Z>
datetime.parse('Sunday, 06-Nov-94 08:49:37 GMT') .. <datetime:1994-11-06T08:49:37Z>
datetime.parse('Sun Nov  6 08:49:37 1994') .. <datetime:1994-11-06T08:49:37>
datetime.parse('Sat, 06 Nov 2010 08:49:37 GMT') .. <datetime:2010-11-06T08:49:37Z>
datetime.parse('Saturday, 06-Nov-10 08:49:37 GMT') .. <datetime:2010-11-06T08:49:37Z>
datetime.parse('Sat Nov  6 08:49:37 2010') .. <datetime:2010-11-06T08:49:37>
datetime.parse('Wed, 06 Nov 2069 08:49:37 GMT') .. <datetime:2069-11-06T08:49:37Z>
datetime.parse('Wednesday, 06-Nov-69 08:49:37 GMT') .. <datetime:2069-11-06T08:49:37Z>
datetime.parse('Wed Nov  6 08:49:37 2069') .. <datetime:2069-11-06T08:49:37>
datetime.parse('Thu, 06 Nov 2070 08:49:37 GMT') .. <datetime:2070-11-06T08:49:37Z>
datetime.parse('Thursday, 06-Nov-70 08:49:37 GMT') .. <datetime:1970-11-06T08:49:37Z>
datetime.parse('Sun Nov  6 08:49:37 2070') .. <datetime:2070-11-06T08:49:37>
datetime.parse('Fri Dec 31 23:59:59 9999') .. <datetime:9999-12-31T23:59:59>
datetime.parse('2010-11-06T08:49:37+09:00') .. <datetime:2010-11-06T08:49:37+09:00>
datetime.parse('Tue Aug 31 23:54:46 +0000 2010') .. <datetime:2010-08-31T23:54:46Z>
datetime.parse('') .. FormatError: invalid time format
datetime.parse('x') .. FormatError: invalid time format
datetime.parse('111') .. FormatError: invalid time format
datetime.parse('Sun Dec 31 24:59:59 9999') .. FormatError: invalid time format
datetime.parse('Sun Dec 31 003:59:59 2010') .. FormatError: invalid time format

======== #5 calculation between datetime and timedelta instances ========

operation of datetime .. OK
3 * timedelta(1, 0, 0) .. <timedelta:3days,0secs(00:00:00),0usecs>
timedelta(1, 0, 0) * 3 .. <timedelta:3days,0secs(00:00:00),0usecs>
timedelta(0, 1, 0) * 3 .. <timedelta:0days,3secs(00:00:03),0usecs>
timedelta(0, 0, 1) * 3 .. <timedelta:0days,0secs(00:00:00),3usecs>
timedelta(0, 3600, 0) * 24 .. <timedelta:1days,0secs(00:00:00),0usecs>
timedelta(0, 3600, 0) * 24 * 4 .. <timedelta:4days,0secs(00:00:00),0usecs>
timedelta(0, 0, 100000) * 10 .. <timedelta:0days,1secs(00:00:01),0usecs>
timedelta(0, 3600 * 24 - 1, 1000000) .. <timedelta:1days,0secs(00:00:00),0usecs>
timedelta(0, 3600 * 24 - 1, 0) + timedelta(0, 1, 0) .. <timedelta:1days,0secs(00:00:00),0usecs>
timedelta(3, 0, 0) + timedelta(5, 0, 0) .. <timedelta:8days,0secs(00:00:00),0usecs>
timedelta(3, 0, 0) - timedelta(5, 0, 0) .. <timedelta:-2days,0secs(00:00:00),0usecs>
timedelta(8, 1000, 1000) + timedelta(5, 300, 300) .. <timedelta:13days,1300secs(00:21:40),1300usecs>
timedelta(8, 1000, 1000) - timedelta(5, 300, 300) .. <timedelta:3days,700secs(00:11:40),700usecs>
timedelta(8, 0, 0) - timedelta(5, 300, 300) .. <timedelta:2days,86099secs(23:54:59),999700usecs>
timedelta(5, 300, 300) + timedelta(2, 86099, 999700) .. <timedelta:8days,0secs(00:00:00),0usecs>
--------------------
2000-03-21 00:00
datetime(year, month, day, hour, min, minsoff => 0) + timedelta(1) .. <datetime:2000-03-22T00:00:00Z>
timedelta(1) + datetime(year, month, day, minsoff => 0) .. <datetime:2000-03-22T00:00:00Z>
dt + timedelta(1) .. <datetime:2000-03-22T00:00:00Z>
dt - (-timedelta(1)) .. <datetime:2000-03-22T00:00:00Z>
dt - timedelta(1) .. <datetime:2000-03-20T00:00:00Z>
dt + (-timedelta(1)) .. <datetime:2000-03-20T00:00:00Z>
dt + timedelta(0, 3600) .. <datetime:2000-03-21T01:00:00Z>
dt + timedelta(0, -3600) .. <datetime:2000-03-20T23:00:00Z>
dt - timedelta(0, 3600) .. <datetime:2000-03-20T23:00:00Z>
dt + (-timedelta(0, 3600)) .. <datetime:2000-03-20T23:00:00Z>
dt + timedelta(0, 0, 1000000) .. <datetime:2000-03-21T00:00:01Z>
dt - timedelta(0, 0, 1000000) .. <datetime:2000-03-20T23:59:59Z>
dt + (-timedelta(0, 0, 1000000)) .. <datetime:2000-03-20T23:59:59Z>
dt + timedelta(0, 0, 2000000) .. <datetime:2000-03-21T00:00:02Z>
dt - timedelta(0, 0, 2000000) .. <datetime:2000-03-20T23:59:58Z>
dt + (-timedelta(0, 0, 2000000)) .. <datetime:2000-03-20T23:59:58Z>
--------------------
2000-03-01 00:00
datetime(year, month, day, hour, min, minsoff => 0) + timedelta(1) .. <datetime:2000-03-02T00:00:00Z>
timedelta(1) + datetime(year, month, day, minsoff => 0) .. <datetime:2000-03-02T00:00:00Z>
dt + timedelta(1) .. <datetime:2000-03-02T00:00:00Z>
dt - (-timedelta(1)) .. <datetime:2000-03-02T00:00:00Z>
dt - timedelta(1) .. <datetime:2000-02-29T00:00:00Z>
dt + (-timedelta(1)) .. <datetime:2000-02-29T00:00:00Z>
dt + timedelta(0, 3600) .. <datetime:2000-03-01T01:00:00Z>
dt + timedelta(0, -3600) .. <datetime:2000-02-29T23:00:00Z>
dt - timedelta(0, 3600) .. <datetime:2000-02-29T23:00:00Z>
dt + (-timedelta(0, 3600)) .. <datetime:2000-02-29T23:00:00Z>
dt + timedelta(0, 0, 1000000) .. <datetime:2000-03-01T00:00:01Z>
dt - timedelta(0, 0, 1000000) .. <datetime:2000-02-29T23:59:59Z>
dt + (-timedelta(0, 0, 1000000)) .. <datetime:2000-02-29T23:59:59Z>
dt + timedelta(0, 0, 2000000) .. <datetime:2000-03-01T00:00:02Z>
dt - timedelta(0, 0, 2000000) .. <datetime:2000-02-29T23:59:58Z>
dt + (-timedelta(0, 0, 2000000)) .. <datetime:2000-02-29T23:59:58Z>
--------------------
2001-03-01 00:00
datetime(year, month, day, hour, min, minsoff => 0) + timedelta(1) .. <datetime:2001-03-02T00:00:00Z>
timedelta(1) + datetime(year, month, day, minsoff => 0) .. <datetime:2001-03-02T00:00:00Z>
dt + timedelta(1) .. <datetime:2001-03-02T00:00:00Z>
dt - (-timedelta(1)) .. <datetime:2001-03-02T00:00:00Z>
dt - timedelta(1) .. <datetime:2001-02-28T00:00:00Z>
dt + (-timedelta(1)) .. <datetime:2001-02-28T00:00:00Z>
dt + timedelta(0, 3600) .. <datetime:2001-03-01T01:00:00Z>
dt + timedelta(0, -3600) .. <datetime:2001-02-28T23:00:00Z>
dt - timedelta(0, 3600) .. <datetime:2001-02-28T23:00:00Z>
dt + (-timedelta(0, 3600)) .. <datetime:2001-02-28T23:00:00Z>
dt + timedelta(0, 0, 1000000) .. <datetime:2001-03-01T00:00:01Z>
dt - timedelta(0, 0, 1000000) .. <datetime:2001-02-28T23:59:59Z>
dt + (-timedelta(0, 0, 1000000)) .. <datetime:2001-02-28T23:59:59Z>
dt + timedelta(0, 0, 2000000) .. <datetime:2001-03-01T00:00:02Z>
dt - timedelta(0, 0, 2000000) .. <datetime:2001-02-28T23:59:58Z>
dt + (-timedelta(0, 0, 2000000)) .. <datetime:2001-02-28T23:59:58Z>
--------------------
2000-02-29 23:00
datetime(year, month, day, hour, min, minsoff => 0) + timedelta(1) .. <datetime:2000-03-01T23:00:00Z>
timedelta(1) + datetime(year, month, day, minsoff => 0) .. <datetime:2000-03-01T00:00:00Z>
dt + timedelta(1) .. <datetime:2000-03-01T23:00:00Z>
dt - (-timedelta(1)) .. <datetime:2000-03-01T23:00:00Z>
dt - timedelta(1) .. <datetime:2000-02-28T23:00:00Z>
dt + (-timedelta(1)) .. <datetime:2000-02-28T23:00:00Z>
dt + timedelta(0, 3600) .. <datetime:2000-03-01T00:00:00Z>
dt + timedelta(0, -3600) .. <datetime:2000-02-29T22:00:00Z>
dt - timedelta(0, 3600) .. <datetime:2000-02-29T22:00:00Z>
dt + (-timedelta(0, 3600)) .. <datetime:2000-02-29T22:00:00Z>
dt + timedelta(0, 0, 1000000) .. <datetime:2000-02-29T23:00:01Z>
dt - timedelta(0, 0, 1000000) .. <datetime:2000-02-29T22:59:59Z>
dt + (-timedelta(0, 0, 1000000)) .. <datetime:2000-02-29T22:59:59Z>
dt + timedelta(0, 0, 2000000) .. <datetime:2000-02-29T23:00:02Z>
dt - timedelta(0, 0, 2000000) .. <datetime:2000-02-29T22:59:58Z>
dt + (-timedelta(0, 0, 2000000)) .. <datetime:2000-02-29T22:59:58Z>
--------------------
2001-02-28 23:00
datetime(year, month, day, hour, min, minsoff => 0) + timedelta(1) .. <datetime:2001-03-01T23:00:00Z>
timedelta(1) + datetime(year, month, day, minsoff => 0) .. <datetime:2001-03-01T00:00:00Z>
dt + timedelta(1) .. <datetime:2001-03-01T23:00:00Z>
dt - (-timedelta(1)) .. <datetime:2001-03-01T23:00:00Z>
dt - timedelta(1) .. <datetime:2001-02-27T23:00:00Z>
dt + (-timedelta(1)) .. <datetime:2001-02-27T23:00:00Z>
dt + timedelta(0, 3600) .. <datetime:2001-03-01T00:00:00Z>
dt + timedelta(0, -3600) .. <datetime:2001-02-28T22:00:00Z>
dt - timedelta(0, 3600) .. <datetime:2001-02-28T22:00:00Z>
dt + (-timedelta(0, 3600)) .. <datetime:2001-02-28T22:00:00Z>
dt + timedelta(0, 0, 1000000) .. <datetime:2001-02-28T23:00:01Z>
dt - timedelta(0, 0, 1000000) .. <datetime:2001-02-28T22:59:59Z>
dt + (-timedelta(0, 0, 1000000)) .. <datetime:2001-02-28T22:59:59Z>
dt + timedelta(0, 0, 2000000) .. <datetime:2001-02-28T23:00:02Z>
dt - timedelta(0, 0, 2000000) .. <datetime:2001-02-28T22:59:58Z>
dt + (-timedelta(0, 0, 2000000)) .. <datetime:2001-02-28T22:59:58Z>
--------------------
2000-01-01 00:00
datetime(year, month, day, hour, min, minsoff => 0) + timedelta(1) .. <datetime:2000-01-02T00:00:00Z>
timedelta(1) + datetime(year, month, day, minsoff => 0) .. <datetime:2000-01-02T00:00:00Z>
dt + timedelta(1) .. <datetime:2000-01-02T00:00:00Z>
dt - (-timedelta(1)) .. <datetime:2000-01-02T00:00:00Z>
dt - timedelta(1) .. <datetime:1999-12-31T00:00:00Z>
dt + (-timedelta(1)) .. <datetime:1999-12-31T00:00:00Z>
dt + timedelta(0, 3600) .. <datetime:2000-01-01T01:00:00Z>
dt + timedelta(0, -3600) .. <datetime:1999-12-31T23:00:00Z>
dt - timedelta(0, 3600) .. <datetime:1999-12-31T23:00:00Z>
dt + (-timedelta(0, 3600)) .. <datetime:1999-12-31T23:00:00Z>
dt + timedelta(0, 0, 1000000) .. <datetime:2000-01-01T00:00:01Z>
dt - timedelta(0, 0, 1000000) .. <datetime:1999-12-31T23:59:59Z>
dt + (-timedelta(0, 0, 1000000)) .. <datetime:1999-12-31T23:59:59Z>
dt + timedelta(0, 0, 2000000) .. <datetime:2000-01-01T00:00:02Z>
dt - timedelta(0, 0, 2000000) .. <datetime:1999-12-31T23:59:58Z>
dt + (-timedelta(0, 0, 2000000)) .. <datetime:1999-12-31T23:59:58Z>
--------------------
2000-12-31 23:00
datetime(year, month, day, hour, min, minsoff => 0) + timedelta(1) .. <datetime:2001-01-01T23:00:00Z>
timedelta(1) + datetime(year, month, day, minsoff => 0) .. <datetime:2001-01-01T00:00:00Z>
dt + timedelta(1) .. <datetime:2001-01-01T23:00:00Z>
dt - (-timedelta(1)) .. <datetime:2001-01-01T23:00:00Z>
dt - timedelta(1) .. <datetime:2000-12-30T23:00:00Z>
dt + (-timedelta(1)) .. <datetime:2000-12-30T23:00:00Z>
dt + timedelta(0, 3600) .. <datetime:2001-01-01T00:00:00Z>
dt + timedelta(0, -3600) .. <datetime:2000-12-31T22:00:00Z>
dt - timedelta(0, 3600) .. <datetime:2000-12-31T22:00:00Z>
dt + (-timedelta(0, 3600)) .. <datetime:2000-12-31T22:00:00Z>
dt + timedelta(0, 0, 1000000) .. <datetime:2000-12-31T23:00:01Z>
dt - timedelta(0, 0, 1000000) .. <datetime:2000-12-31T22:59:59Z>
dt + (-timedelta(0, 0, 1000000)) .. <datetime:2000-12-31T22:59:59Z>
dt + timedelta(0, 0, 2000000) .. <datetime:2000-12-31T23:00:02Z>
dt - timedelta(0, 0, 2000000) .. <datetime:2000-12-31T22:59:58Z>
dt + (-timedelta(0, 0, 2000000)) .. <datetime:2000-12-31T22:59:58Z>

======== #6 datetime.isleap() ========

cond(datetime.isleap(1800 .. 1899), '*', '.').join() .. ....*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...
cond(datetime.isleap(1900 .. 1999), '*', '.').join() .. ....*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...
cond(datetime.isleap(2000 .. 2099), '*', '.').join() .. *...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...
cond(datetime.isleap(2100 .. 2199), '*', '.').join() .. ....*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...*...

======== #7 property set ========

dt.year = 0 .. ValueError: datetime#year must be betwen 1 and 9999 inclusive
dt.year = 1 .. 1
dt.year = 9999 .. 9999
dt.year = 10000 .. ValueError: datetime#year must be betwen 1 and 9999 inclusive
dt.month = 0 .. ValueError: datetime#month must be between 1 and 12 inclusive
dt.month = 1 .. 1
dt.month = 12 .. 12
dt.month = 13 .. ValueError: datetime#month must be between 1 and 12 inclusive
dt.day = 0 .. ValueError: datetime#day must be between 1 and 31 inclusive
dt.day = 1 .. 1
dt.day = 31 .. 31
dt.day = 32 .. ValueError: datetime#day must be between 1 and 31 inclusive
dt.hour = -1 .. ValueError: datetime#hour must be between 0 and 23 inclusive
dt.hour = 0 .. 0
dt.hour = 23 .. 23
dt.hour = 24 .. ValueError: datetime#hour must be between 0 and 23 inclusive
dt.min = -1 .. ValueError: datetime#min must be betwen 0 and 59 inclusive
dt.min = 0 .. 0
dt.min = 59 .. 59
dt.min = 60 .. ValueError: datetime#min must be betwen 0 and 59 inclusive
dt.sec = -1 .. ValueError: datetime#sec must be between 0 and 59 inclusive
dt.sec = 0 .. 0
dt.sec = 59 .. 59
dt.sec = 60 .. ValueError: datetime#sec must be between 0 and 59 inclusive
dt.usec = -1 .. ValueError: datetime#usec must be between 0 and 999999 inclusive
dt.usec = 0 .. 0
dt.usec = 999999 .. 999999
dt.usec = 1000000 .. ValueError: datetime#usec must be between 0 and 999999 inclusive
