Okay, group, I'm opening this up for discussion...

Is my routine wrong, or is the test flawed?

This test works fine at my house, U.S. Mountain Standard Time.
When I change my Windows time zone to Brisbane, it fails here like it does
for Mark.

The test is:
<Python>
    def testDateObjectFromCOMDate(self):
        cmd=self.tc.DateObjectFromCOMDate(37435.7604282)
        t1=time.gmtime(time.mktime((2002,6,28,12,14,1,
4,31+28+31+30+31+28,-1)))
        t2=time.gmtime(time.mktime((2002,6,28,12,16,1,
4,31+28+31+30+31+28,-1)))
        assert t1<cmd<t2, '"%s" should be about 2002-6-28
12:15:01'%repr(cmd)
</Python>

The code under test is:

<Python>

>     def DateObjectFromCOMDate(self,comDate):
>         'Returns ticks since 1970'
>         if isinstance(comDate,datetime.datetime):
>             return comDate.timetuple()
>         elif isinstance(comDate,DateTime):
>             fcomDate = comDate.ToOADate()
>         else:
>             fcomDate = float(comDate)
>         secondsperday=86400 # 24*60*60
>         #ComDate is number of days since 1899-12-31, gmtime epoch is
> 1970-1-1 = 25569 days
>         t=time.gmtime(secondsperday*(fcomDate-25569.0))
>         return t
> #year,month,day,hour,minute,second,weekday,julianday,daylightsaving=t
>
</Python>

I don't want to re-invent the wheel here.  Does one of you gurus have better
code?
--
Vernon


On Tue, Feb 3, 2009 at 9:32 PM, Mark Hammond <mhamm...@skippinet.com.au>wrote:

>  Thanks Vernon,
>
>   I seem to be having issues with 2.x which I can't put down to the pywin32
> changes - the failures relate to use of the time module.
>
>
>
> Default Date Converter is <adodbapi.pythonDateTimeConverter object at
> 0x0294B530>
>
> ...............F.................................
>
> ======================================================================
>
> FAIL: testDateObjectFromCOMDate (__main__.TestPythonTimeConverter)
>
> ----------------------------------------------------------------------
>
> Traceback (most recent call last):
>
>   File "adodbapitest.py", line 671, in testDateObjectFromCOMDate
>
>     assert t1<cmd<t2, '"%s" should be about 2002-6-28 12:15:01'%repr(cmd)
>
> AssertionError: "time.struct_time(tm_year=2002, tm_mon=6, tm_mday=28,
> tm_hour=18, tm_min=15, tm_sec=0, tm_wday=4, tm_yday=179, tm_isdst=0)" should
> be about 2002-6-28 12:15:01
>
>
>
> ----------------------------------------------------------------------
>
> Ran 49 tests in 1.281s
>
>
>
> FAILED (failures=1)
>
> Changed dateconverter to
>
> <adodbapi.pythonTimeConverter object at 0x029C31F0>
>
> ...............F.................................
>
> ======================================================================
>
> FAIL: testDateObjectFromCOMDate (__main__.TestPythonTimeConverter)
>
> ----------------------------------------------------------------------
>
> Traceback (most recent call last):
>
>   File "adodbapitest.py", line 671, in testDateObjectFromCOMDate
>
>     assert t1<cmd<t2, '"%s" should be about 2002-6-28 12:15:01'%repr(cmd)
>
> AssertionError: "time.struct_time(tm_year=2002, tm_mon=6, tm_mday=28,
> tm_hour=18, tm_min=15, tm_sec=0, tm_wday=4, tm_yday=179, tm_isdst=0)" should
> be about 2002-6-28 12:15:01
>
>
>
> ----------------------------------------------------------------------
>
>
>
> I suspect it is timezone related: FYI:
>
>
>
> >>> import adodbapi
>
> >>> tc=adodbapi.pythonTimeConverter()
>
> >>> tc.DateObjectFromCOMDate(37435.7604282)
>
> time.struct_time(tm_year=2002, tm_mon=6, tm_mday=28, tm_hour=18, tm_min=15,
> tm_sec=0, tm_wday=4, tm_yday=179, tm_isdst=0)
>
> >>> time.gmtime(time.mktime(_))
>
> time.struct_time(tm_year=2002, tm_mon=6, tm_mday=28, tm_hour=8, tm_min=15,
> tm_sec=0, tm_wday=4, tm_yday=179, tm_isdst=0)
>
>
>
> If you get the same result as me in that last line I think the fix should
> be easy…
>
>
_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to