]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/wx/lib/CDate.py
Added docview modules from Peter Yared and Morgan Hua
[wxWidgets.git] / wxPython / wx / lib / CDate.py
index 63dc272d4d248c69110acad5332cdf957c3791aa..76a1a296c60ad5367eaa0a170f6202c58e2c904b 100644 (file)
@@ -1,8 +1,129 @@
+# Name:         CDate.py
+# Purpose:      Date and Calendar classes
+#
+# Author:       Lorne White (email: lwhite1@planet.eon.net)
+#
+# Created:
+# Version       0.2 08-Nov-1999
+# Licence:      wxWindows license
+#----------------------------------------------------------------------------
+# Updated:      01-Dec-2004
+# Action:       Cast the year variable to an integer under the Date Class
+# Reason:       When the year was compared in the isleap() function, if it was
+#               in a string format, then an error was raised.    
 
-"""Renamer stub: provides a way to drop the wx prefix from wxPython objects."""
+import time
+
+Month = {2: 'February', 3: 'March', None: 0, 'July': 7, 11:
+         'November', 'December': 12, 'June': 6, 'January': 1, 'September': 9,
+         'August': 8, 'March': 3, 'November': 11, 'April': 4, 12: 'December',
+         'May': 5, 10: 'October', 9: 'September', 8: 'August', 7: 'July', 6:
+         'June', 5: 'May', 4: 'April', 'October': 10, 'February': 2, 1:
+         'January', 0: None}
+
+# Number of days per month (except for February in leap years)
+mdays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
+
+# Full and abbreviated names of weekdays
+day_name = [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
+day_abbr = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', ]
+
+# Return number of leap years in range [y1, y2)
+# Assume y1 <= y2 and no funny (non-leap century) years
+
+def leapdays(y1, y2):
+    return (y2+3)/4 - (y1+3)/4
+
+# Return 1 for leap years, 0 for non-leap years
+def isleap(year):
+    return year % 4 == 0 and (year % 100 <> 0 or year % 400 == 0)
+
+def FillDate(val):
+    s = str(val)
+    if len(s) < 2:
+        s = '0' + s
+    return s
+
+
+def julianDay(year, month, day):
+    b = 0L
+    year, month, day = long(year), long(month), long(day)
+    if month > 12L:
+        year = year + month/12L
+        month = month%12
+    elif month < 1L:
+        month = -month
+        year = year - month/12L - 1L
+        month = 12L - month%12L
+    if year > 0L:
+        yearCorr = 0L
+    else:
+        yearCorr = 3L
+    if month < 3L:
+        year = year - 1L
+        month = month + 12L
+    if year*10000L + month*100L + day > 15821014L:
+        b = 2L - year/100L + year/400L
+    return (1461L*year - yearCorr)/4L + 306001L*(month + 1L)/10000L + day + 1720994L + b
+
+
+def TodayDay():
+    date = time.localtime(time.time())
+    year = date[0]
+    month = date[1]
+    day = date[2]
+    julian = julianDay(year, month, day)
+    daywk = dayOfWeek(julian)
+    daywk = day_name[daywk]
+    return(daywk)
+
+def FormatDay(value):
+    date = FromFormat(value)
+    daywk = DateCalc.dayOfWeek(date)
+    daywk = day_name[daywk]
+    return(daywk)
+
+def FromJulian(julian):
+    julian = long(julian)
+    if (julian < 2299160L):
+        b = julian + 1525L
+    else:
+        alpha = (4L*julian - 7468861L)/146097L
+        b = julian + 1526L + alpha - alpha/4L
+    c = (20L*b - 2442L)/7305L
+    d = 1461L*c/4L
+    e = 10000L*(b - d)/306001L
+    day = int(b - d - 306001L*e/10000L)
+    if e < 14L:
+        month = int(e - 1L)
+    else:
+        month = int(e - 13L)
+    if month > 2:
+        year = c - 4716L
+    else:
+        year = c - 4715L
+    year = int(year)
+    return year, month, day
+
+def dayOfWeek(julian):
+    return int((julian + 1L)%7L)
+
+def daysPerMonth(month, year):
+    ndays = mdays[month] + (month == 2 and isleap(year))
+    return ndays
+
+class now:
+    def __init__(self):
+        self.date = time.localtime(time.time())
+        self.year = self.date[0]
+        self.month = self.date[1]
+        self.day = self.date[2]
+
+class Date:
+    def __init__(self, year, month, day):
+        self.julian = julianDay(year, month, day)
+        self.month = month
+        self.year = int(year)
+        self.day_of_week = dayOfWeek(self.julian)
+        self.days_in_month = daysPerMonth(self.month, self.year)
 
-from wx import _rename
-from wxPython.lib import CDate
-_rename(globals(), CDate.__dict__, modulename='lib.CDate')
-del CDate
-del _rename