diff options
author | adustman <adustman@9fc6cd9a-920d-0410-adcf-ac96716ed7e8> | 2003-07-11 00:07:06 +0000 |
---|---|---|
committer | adustman <adustman@9fc6cd9a-920d-0410-adcf-ac96716ed7e8> | 2003-07-11 00:07:06 +0000 |
commit | da8b57cc794f5f019d5cfc1f10b48dc5829376a1 (patch) | |
tree | 7033019a5cbc94e9d12266a8217c1e069c2ac5dd | |
parent | 03a0fcdd1f70687e66c83e060ea43481a4593053 (diff) | |
download | mysqldb1-da8b57cc794f5f019d5cfc1f10b48dc5829376a1.tar.gz |
Finish up TimeDelta_or_None
-rw-r--r-- | MySQLdb/MySQLdb/pytimes.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/MySQLdb/MySQLdb/pytimes.py b/MySQLdb/MySQLdb/pytimes.py new file mode 100644 index 0000000..338afbf --- /dev/null +++ b/MySQLdb/MySQLdb/pytimes.py @@ -0,0 +1,57 @@ +"""Use Python datetime module to handle date and time columns.""" + +# datetime is only in Python 2.3 or newer, so it is safe to use +# string methods. However, have to use apply(func, args) instead +# of func(*args) because 1.5.2 will reject the syntax. + +from time import localtime +from datetime import date, datetime, time, timedelta + +Date = date +Time = time +Timestamp = datetime + +DateTimeDeltaType = type(timedelta) +DateTimeType = type(datetime) + +def DateFromTicks(ticks): + """Convert UNIX ticks into a date instance.""" + return apply(date, localtime(ticks)[:3]) + +def TimeFromTicks(ticks): + """Convert UNIX ticks into a time instance.""" + return apply(time, localtime(ticks)[3:6]) + +def TimestampFromTicks(ticks): + """Convert UNIX ticks into a datetime instance.""" + return apply(datetime, localtime(ticks)[:6]) + +format_TIME = format_TIMESTAMP = format_DATE = str + +def DateTime_or_None(s): + if ' ' in s: + sep = ' ' + elif 'T' in s: + sep = 'T' + else: + return None + + try: + d, t = s.split(sep, 1) + return apply(datetime, tuple(d.split('-')+t.split(':'))) + except: + return None + +def TimeDelta_or_None(s): + try: + h, m, s = map(float, s.split(':')) + if h < 0: + return -timedelta(hours=h, minutes=m, seconds=s) + else: + return timedelta(hours=h, minutes=m, seconds=s) + except: + return None + +def Date_or_None(s): + try: return apply(date, tuple(s.split('-',2))) + except: return None |