[Zope-Checkins] SVN: Zope/trunk/lib/python/DateTime/ Added
IDateTime interface
Philipp von Weitershausen
philikon at philikon.de
Sat Nov 26 10:44:19 EST 2005
Log message for revision 40379:
Added IDateTime interface
Changed:
U Zope/trunk/lib/python/DateTime/DateTime.py
A Zope/trunk/lib/python/DateTime/interfaces.py
-=-
Modified: Zope/trunk/lib/python/DateTime/DateTime.py
===================================================================
--- Zope/trunk/lib/python/DateTime/DateTime.py 2005-11-26 09:17:49 UTC (rev 40378)
+++ Zope/trunk/lib/python/DateTime/DateTime.py 2005-11-26 15:44:19 UTC (rev 40379)
@@ -19,6 +19,9 @@
from time import time, gmtime, localtime
from time import daylight, timezone, altzone, strftime
from datetime import datetime
+from interfaces import IDateTime
+from interfaces import DateTimeError, SyntaxError, DateError, TimeError
+from zope.interface import implements
default_datefmt = None
@@ -40,19 +43,6 @@
except:
tzname=('UNKNOWN','UNKNOWN')
-class DateTimeError( Exception ):
- pass
-
-class SyntaxError( DateTimeError ):
- pass
-
-class DateError( DateTimeError ):
- pass
-
-class TimeError( DateTimeError ):
- pass
-
-
# To control rounding errors, we round system time to the nearest
# millisecond. Then delicate calculations can rely on that the
# maximum precision that needs to be preserved is known.
@@ -492,6 +482,8 @@
and numeric operations return a new DateTime object rather than
modify the current object."""
+ implements(IDateTime)
+
# For security machinery:
__roles__=None
__allow_access_to_unprotected_subobjects__=1
Added: Zope/trunk/lib/python/DateTime/interfaces.py
===================================================================
--- Zope/trunk/lib/python/DateTime/interfaces.py 2005-11-26 09:17:49 UTC (rev 40378)
+++ Zope/trunk/lib/python/DateTime/interfaces.py 2005-11-26 15:44:19 UTC (rev 40379)
@@ -0,0 +1,383 @@
+##############################################################################
+#
+# Copyright (c) 2005 Zope Corporation and Contributors. All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE
+#
+##############################################################################
+"""DateTime interfaces
+
+$Id$
+"""
+from zope.interface import Interface
+
+class DateTimeError(Exception):
+ pass
+
+class SyntaxError(DateTimeError):
+ pass
+
+class DateError(DateTimeError):
+ pass
+
+class TimeError(DateTimeError):
+ pass
+
+class IDateTime(Interface):
+
+ # Conversion and comparison methods
+
+ def localZone(ltm=None):
+ '''Returns the time zone on the given date. The time zone
+ can change according to daylight savings.'''
+
+ def timeTime():
+ """Return the date/time as a floating-point number in UTC, in
+ the format used by the python time module. Note that it is
+ possible to create date/time values with DateTime that have no
+ meaningful value to the time module."""
+
+ def toZone(z):
+ """Return a DateTime with the value as the current object,
+ represented in the indicated timezone."""
+
+ def isFuture():
+ """Return true if this object represents a date/time later
+ than the time of the call"""
+
+ def isPast():
+ """Return true if this object represents a date/time earlier
+ than the time of the call"""
+
+ def isCurrentYear():
+ """Return true if this object represents a date/time that
+ falls within the current year, in the context of this
+ object's timezone representation"""
+
+ def isCurrentMonth():
+ """Return true if this object represents a date/time that
+ falls within the current month, in the context of this
+ object's timezone representation"""
+
+ def isCurrentDay():
+ """Return true if this object represents a date/time that
+ falls within the current day, in the context of this object's
+ timezone representation"""
+
+ def isCurrentHour():
+ """Return true if this object represents a date/time that
+ falls within the current hour, in the context of this object's
+ timezone representation"""
+
+ def isCurrentMinute():
+ """Return true if this object represents a date/time that
+ falls within the current minute, in the context of this
+ object's timezone representation"""
+
+ def earliestTime():
+ """Return a new DateTime object that represents the earliest
+ possible time (in whole seconds) that still falls within the
+ current object's day, in the object's timezone context"""
+
+ def latestTime():
+ """Return a new DateTime object that represents the latest
+ possible time (in whole seconds) that still falls within the
+ current object's day, in the object's timezone context"""
+
+ def greaterThan(t):
+ """Compare this DateTime object to another DateTime object OR
+ a floating point number such as that which is returned by the
+ python time module. Returns true if the object represents a
+ date/time greater than the specified DateTime or time module
+ style time. Revised to give more correct results through
+ comparison of long integer milliseconds."""
+
+ __gt__ = greaterThan
+
+ def greaterThanEqualTo(t):
+ """Compare this DateTime object to another DateTime object OR
+ a floating point number such as that which is returned by the
+ python time module. Returns true if the object represents a
+ date/time greater than or equal to the specified DateTime or
+ time module style time. Revised to give more correct results
+ through comparison of long integer milliseconds."""
+
+ __ge__ = greaterThanEqualTo
+
+ def equalTo(t):
+ """Compare this DateTime object to another DateTime object OR
+ a floating point number such as that which is returned by the
+ python time module. Returns true if the object represents a
+ date/time equal to the specified DateTime or time module style
+ time. Revised to give more correct results through comparison
+ of long integer milliseconds."""
+
+ __eq__ = equalTo
+
+ def notEqualTo(t):
+ """Compare this DateTime object to another DateTime object OR
+ a floating point number such as that which is returned by the
+ python time module. Returns true if the object represents a
+ date/time not equal to the specified DateTime or time module
+ style time. Revised to give more correct results through
+ comparison of long integer milliseconds."""
+
+ __ne__ = notEqualTo
+
+ def lessThan(t):
+ """Compare this DateTime object to another DateTime object OR
+ a floating point number such as that which is returned by the
+ python time module. Returns true if the object represents a
+ date/time less than the specified DateTime or time module
+ style time. Revised to give more correct results through
+ comparison of long integer milliseconds."""
+
+ __lt__ = lessThan
+
+ def lessThanEqualTo(t):
+ """Compare this DateTime object to another DateTime object OR
+ a floating point number such as that which is returned by the
+ python time module. Returns true if the object represents a
+ date/time less than or equal to the specified DateTime or time
+ module style time. Revised to give more correct results
+ through comparison of long integer milliseconds."""
+
+ __le__ = lessThanEqualTo
+
+ def isLeapYear():
+ """Return true if the current year (in the context of the
+ object's timezone) is a leap year"""
+
+ def dayOfYear():
+ """Return the day of the year, in context of the timezone
+ representation of the object"""
+
+ # Component access
+
+ def parts():
+ """Return a tuple containing the calendar year, month, day,
+ hour, minute second and timezone of the object"""
+
+ def timezone():
+ """Return the timezone in which the object is represented."""
+
+ def tzoffset():
+ """Return the timezone offset for the objects timezone."""
+
+ def year():
+ """Return the calendar year of the object"""
+
+ def month():
+ """Return the month of the object as an integer"""
+
+ def Month():
+ """Return the full month name"""
+
+ def aMonth():
+ """Return the abreviated month name."""
+
+ def Mon():
+ """Compatibility: see aMonth"""
+
+ def pMonth():
+ """Return the abreviated (with period) month name."""
+
+ def Mon_():
+ """Compatibility: see pMonth"""
+
+ def day():
+ """Return the integer day"""
+
+ def Day():
+ """Return the full name of the day of the week"""
+
+ def DayOfWeek():
+ """Compatibility: see Day"""
+
+ def aDay():
+ """Return the abreviated name of the day of the week"""
+
+ def pDay():
+ """Return the abreviated (with period) name of the day of the
+ week"""
+
+ def Day_():
+ """Compatibility: see pDay"""
+
+ def dow():
+ """Return the integer day of the week, where sunday is 0"""
+
+ def dow_1():
+ """Return the integer day of the week, where sunday is 1"""
+
+ def h_12():
+ """Return the 12-hour clock representation of the hour"""
+
+ def h_24():
+ """Return the 24-hour clock representation of the hour"""
+
+ def ampm():
+ """Return the appropriate time modifier (am or pm)"""
+
+ def hour():
+ """Return the 24-hour clock representation of the hour"""
+
+ def minute():
+ """Return the minute"""
+
+ def second():
+ """Return the second"""
+
+ def millis():
+ """Return the millisecond since the epoch in GMT."""
+
+ def strftime(format):
+ """Format the date/time using the *current timezone representation*."""
+
+ # General formats from previous DateTime
+
+ def Date():
+ """Return the date string for the object."""
+
+ def Time():
+ """Return the time string for an object to the nearest second."""
+
+ def TimeMinutes():
+ """Return the time string for an object not showing seconds."""
+
+ def AMPM():
+ """Return the time string for an object to the nearest second."""
+
+ def AMPMMinutes():
+ """Return the time string for an object not showing seconds."""
+
+ def PreciseTime():
+ """Return the time string for the object."""
+
+ def PreciseAMPM():
+ """Return the time string for the object."""
+
+ def yy():
+ """Return calendar year as a 2 digit string"""
+
+ def mm():
+ """Return month as a 2 digit string"""
+
+ def dd():
+ """Return day as a 2 digit string"""
+
+ def rfc822():
+ """Return the date in RFC 822 format"""
+
+ # New formats
+
+ def fCommon():
+ """Return a string representing the object\'s value in the
+ format: March 1, 1997 1:45 pm"""
+
+ def fCommonZ():
+ """Return a string representing the object\'s value in the
+ format: March 1, 1997 1:45 pm US/Eastern"""
+
+ def aCommon():
+ """Return a string representing the object\'s value in the
+ format: Mar 1, 1997 1:45 pm"""
+
+ def aCommonZ():
+ """Return a string representing the object\'s value in the
+ format: Mar 1, 1997 1:45 pm US/Eastern"""
+
+ def pCommon():
+ """Return a string representing the object\'s value in the
+ format: Mar. 1, 1997 1:45 pm"""
+
+ def pCommonZ():
+ """Return a string representing the object\'s value
+ in the format: Mar. 1, 1997 1:45 pm US/Eastern"""
+
+
+ def ISO():
+ """Return the object in ISO standard format. Note: this is
+ *not* ISO 8601-format! See the ISO8601 and HTML4 methods below
+ for ISO 8601-compliant output
+
+ Dates are output as: YYYY-MM-DD HH:MM:SS
+ """
+
+ def ISO8601():
+ """Return the object in ISO 8601-compatible format containing
+ the date, time with seconds-precision and the time zone
+ identifier - see http://www.w3.org/TR/NOTE-datetime
+
+ Dates are output as: YYYY-MM-DDTHH:MM:SSTZD
+ T is a literal character.
+ TZD is Time Zone Designator, format +HH:MM or -HH:MM
+
+ The HTML4 method below offers the same formatting, but
+ converts to UTC before returning the value and sets the TZD"Z"
+ """
+
+ def HTML4():
+ """Return the object in the format used in the HTML4.0
+ specification, one of the standard forms in ISO8601. See
+ http://www.w3.org/TR/NOTE-datetime
+
+ Dates are output as: YYYY-MM-DDTHH:MM:SSZ
+ T, Z are literal characters.
+ The time is in UTC.
+ """
+
+ def __add__(other):
+ """A DateTime may be added to a number and a number may be
+ added to a DateTime; two DateTimes cannot be added."""
+
+ __radd__=__add__
+
+ def __sub__(other):
+ """Either a DateTime or a number may be subtracted from a
+ DateTime, however, a DateTime may not be subtracted from a
+ number."""
+
+ def __repr__():
+ """Convert a DateTime to a string that looks like a Python
+ expression."""
+
+ def __str__():
+ """Convert a DateTime to a string."""
+
+ def __cmp__(obj):
+ """Compare a DateTime with another DateTime object, or a float
+ such as those returned by time.time().
+
+ NOTE: __cmp__ support is provided for backward compatibility
+ only, and mixing DateTimes with ExtensionClasses could cause
+ __cmp__ to break. You should use the methods lessThan,
+ greaterThan, lessThanEqualTo, greaterThanEqualTo, equalTo and
+ notEqualTo to avoid potential problems later!!"""
+
+ def __hash__():
+ """Compute a hash value for a DateTime"""
+
+ def __int__():
+ """Convert to an integer number of seconds since the epoch (gmt)"""
+
+ def __long__():
+ """Convert to a long-int number of seconds since the epoch (gmt)"""
+
+ def __float__():
+ """Convert to floating-point number of seconds since the epoch (gmt)"""
+
+ def JulianDay():
+ """Return the Julian day according to
+ http://www.tondering.dk/claus/cal/node3.html#sec-calcjd
+ """
+
+ def week():
+ """Return the week number according to ISO
+ see http://www.tondering.dk/claus/cal/node6.html#SECTION00670000000000000000
+ """
Property changes on: Zope/trunk/lib/python/DateTime/interfaces.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
More information about the Zope-Checkins
mailing list