<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR>
<STYLE>@page Section1 {size: 595.3pt 841.9pt; margin: 70.85pt 70.85pt 70.85pt 70.85pt; }
P.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
LI.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline
}
PRE {
        FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Courier New"
}
SPAN.EmailStyle17 {
        COLOR: windowtext; FONT-FAMILY: Arial
}
DIV.Section1 {
        page: Section1
}
</STYLE>
</HEAD>
<BODY lang=FR-BE vLink=purple link=blue bgColor=#ffffff>
<DIV><FONT face=Arial size=2>hi there</FONT></DIV>
<DIV> </DIV>
<DIV><FONT face=Arial size=2>i handled this problem by writing the following 2
functions:</FONT></DIV>
<DIV><FONT face=Arial size=2><BR>def tmCheckDate(self, p_datestring,
p_separator='/'):<BR> """This functions takes a string that
reprezents a date like 'dd/mm/yyyy' and tests is a valide
date."""<BR> l_isDate = 1<BR> l_daysInMonth
= [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]<BR>
l_dateparts = p_datestring.split(p_separator)<BR> if
len(l_dateparts) != 3:<BR> l_isDate =
0<BR> else:<BR>
l_intYear = l_dateparts[2]<BR>
l_intMonth = l_dateparts[1]<BR>
l_intDay = l_dateparts[0]<BR>
try:<BR>
l_intYear = int(l_intYear,
10)<BR>
l_intMonth = int(l_intMonth,
10)<BR>
l_intDay = int(l_intDay, 10)<BR>
except:<BR>
l_isDate = 0<BR>
else:<BR> if
(l_intYear <=
50):<BR>
l_intYear +=
2000<BR> if
(l_intYear >= 51 and l_intYear <
100):<BR>
l_intYear +=
1900<BR> if
((l_intMonth==0) or (l_intMonth > 12) or (l_intDay == 0) or (l_intYear >
9999)):<BR>
l_isDate =
0<BR>
else:<BR>
if (l_intMonth == 2):
#february<BR>
if
calendar.isleap(l_intYear):<BR>
l_nDays =
29<BR>
else:<BR>
l_nDays =
28<BR>
else:<BR>
l_nDays =
l_daysInMonth[l_intMonth-1]<BR>
if (l_intDay >
l_nDays):<BR>
l_isDate = 0<BR> return l_isDate</DIV>
<DIV> </DIV>
<DIV>def tmConvertStringToDateTimeObj(self, p_datestring,
p_separator='/'):<BR> """Takes a string that represents a date
like 'dd/mm/yyyy' and returns a DateTime object"""<BR>
try:<BR> l_dateparts =
p_datestring.split(p_separator)<BR>
l_intYear = int(l_dateparts[2],
10)<BR> l_intMonth =
int(l_dateparts[1], 10)<BR> l_intDay =
int(l_dateparts[0], 10)<BR> return
DateTime('%s/%s/%s 00:00:00' % (l_intYear, l_intMonth,
l_intDay))<BR>
except:<BR> return None<BR></DIV>
<DIV>i used the tmCheckDate function to validate strings like 'dd/mm/yyyy' that
comes from a form or whatever,<BR>and after that tmConvertStringToDateTimeObj to
get the DateTime object.</DIV>
<DIV> </DIV>
<DIV>you can modify the functions to work with 'YYYY/MM/DD' strings.</DIV>
<DIV> </DIV>
<DIV>hope this will help</DIV>
<DIV> </DIV>
<DIV>dragos<BR></FONT></DIV>
<BLOCKQUOTE
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
<DIV
style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B>
<A title=philippe.vignaux@africamuseum.be
href="mailto:philippe.vignaux@africamuseum.be">Philippe Vignaux</A> </DIV>
<DIV style="FONT: 10pt arial"><B>To:</B> <A title=zope@zope.org
href="mailto:zope@zope.org">zope@zope.org</A> </DIV>
<DIV style="FONT: 10pt arial"><B>Sent:</B> Monday, November 24, 2003 4:37
PM</DIV>
<DIV style="FONT: 10pt arial"><B>Subject:</B> [Zope] date formats</DIV>
<DIV><BR></DIV>
<DIV class=Section1>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">Hi all !</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">… can’t get rid off my dates
problems ….</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">I would like the following python
statements to apply validity checks on a date <I><SPAN
style="FONT-STYLE: italic">always</SPAN></I> inputed under
format YYYY / MM / DD</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">(GMT+1)</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">The 2 first examples behaves as
expected.</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">The last one not.
</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">try:</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">
date=DateTime('2003/07/03')</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"> </SPAN></FONT><FONT
face=Arial><SPAN style="FONT-FAMILY: Arial">print date.strftime("%Y %B
%d")</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">except:</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"> print
'error'</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P><PRE><FONT face=Arial size=3><SPAN lang=EN-GB style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">return printed </SPAN></FONT><FONT size=3><SPAN lang=EN-GB style="FONT-SIZE: 12pt">2003 July 03 (OK)</SPAN></FONT></PRE>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">try:</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">
date=DateTime('2003/03/07')</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"> </SPAN></FONT><FONT
face=Arial><SPAN style="FONT-FAMILY: Arial">print date.strftime("%Y %B
%d")</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">except:</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"> print
'error'</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">return
printed
</SPAN></FONT><SPAN lang=EN-GB>2003 March 07 (OK)</SPAN></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">try:</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">
date=DateTime('2003/13/03')</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"> print
date.strftime("%Y %B %d")</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">except:</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"> print
'error'</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P><PRE><FONT face=Arial size=3><SPAN lang=EN-GB style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">return printed </SPAN></FONT><FONT size=3><SPAN style="FONT-SIZE: 12pt">2003 March 13 (NOK)</SPAN></FONT></PRE>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">While I’m expecting an error (no
months with id 13 !!!) it reverses the month part and the day part
!!</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">Why ??</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">Is that the normal behaviour
??</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">Or is there any parameter to
provide so that python knows the format is always YYYY / MM /
DD</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=2><SPAN lang=EN-GB
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">(</SPAN></FONT><FONT face=Arial
size=2><SPAN lang=EN-GB style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">the
setup: Windows 2000
server
Zope 2.6.2 python 2.1 </SPAN></FONT><FONT
face=Arial size=2><SPAN lang=EN-GB
style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">)</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">Thanks for any help
!</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">Phil.</SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial size=3><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"></SPAN></FONT> </P></DIV>
<P>
<HR>
<P></P>_______________________________________________<BR>Zope maillist
-
Zope@zope.org<BR>http://mail.zope.org/mailman/listinfo/zope<BR>**
No cross posts or HTML encoding! **<BR>(Related lists -
<BR> http://mail.zope.org/mailman/listinfo/zope-announce<BR> http://mail.zope.org/mailman/listinfo/zope-dev
)<BR></BLOCKQUOTE></BODY></HTML>