summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoradustman <adustman@9fc6cd9a-920d-0410-adcf-ac96716ed7e8>2003-07-11 00:07:06 +0000
committeradustman <adustman@9fc6cd9a-920d-0410-adcf-ac96716ed7e8>2003-07-11 00:07:06 +0000
commitda8b57cc794f5f019d5cfc1f10b48dc5829376a1 (patch)
tree7033019a5cbc94e9d12266a8217c1e069c2ac5dd
parent03a0fcdd1f70687e66c83e060ea43481a4593053 (diff)
downloadmysqldb1-da8b57cc794f5f019d5cfc1f10b48dc5829376a1.tar.gz
Finish up TimeDelta_or_None
-rw-r--r--MySQLdb/MySQLdb/pytimes.py57
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