示例#1
0
文件: tests.py 项目: ryanss/bdateutil
 def test_parserinfo(self):
     self.assertEqual(parse("1/2/2014"), datetime(2014, 1, 2))
     self.assertEqual(parse(b"1/2/2014"), datetime(2014, 1, 2))
     self.assertEqual(parse("1/2/2014", dayfirst=True),
                      datetime(2014, 2, 1))
     self.assertEqual(parse("1/2/2014", parserinfo(dayfirst=True)),
                      datetime(2014, 2, 1))
示例#2
0
 def test_parserinfo(self):
     self.assertEqual(parse("1/2/2014"), datetime(2014, 1, 2))
     self.assertEqual(parse(b"1/2/2014"), datetime(2014, 1, 2))
     self.assertEqual(parse("1/2/2014", dayfirst=True),
                      datetime(2014, 2, 1))
     self.assertEqual(parse("1/2/2014", parserinfo(dayfirst=True)),
                      datetime(2014, 2, 1))
示例#3
0
    def testNoYearFirstNoDayFirst(self):
        dtstr = '090107'

        # Should be MMDDYY
        self.assertEqual(parse(dtstr), datetime(2007, 9, 1))

        self.assertEqual(parse(dtstr, yearfirst=False, dayfirst=False),
                         datetime(2007, 9, 1))
示例#4
0
 def test_datetime(self):
     self.assertEqual(datetime("2015-03-25 12:34"),
                      dt.datetime(2015, 3, 25, 12, 34))
     self.assertEqual(datetime(2015, 3, 99, 23, 45),
                      datetime(2015, 3, 31, 23, 45))
     self.assertEqual(datetime.now().date(), dt.datetime.now().date())
     self.assertEqual(datetime.now(bdays=-45).date(),
                      (dt.datetime.now() - relativedelta(bdays=45)).date())
示例#5
0
    def testYearFirst(self):
        dtstr = '090107'

        # Should be MMDDYY
        self.assertEqual(parse(dtstr, yearfirst=True), datetime(2009, 1, 7))

        self.assertEqual(parse(dtstr, yearfirst=True, dayfirst=False),
                         datetime(2009, 1, 7))
示例#6
0
    def testDayFirst(self):
        dtstr = '090107'

        # Should be DDMMYY
        self.assertEqual(parse(dtstr, dayfirst=True), datetime(2007, 1, 9))

        self.assertEqual(parse(dtstr, yearfirst=False, dayfirst=True),
                         datetime(2007, 1, 9))
示例#7
0
 def test_datetime(self):
     self.assertEqual(datetime("2015-03-25 12:34"),
                      dt.datetime(2015, 3, 25, 12, 34))
     self.assertEqual(datetime(2015, 3, 99, 23, 45),
                      datetime(2015, 3, 31, 23, 45))
     self.assertEqual(datetime.now().date(), dt.datetime.now().date())
     self.assertEqual(
         datetime.now(bdays=-45).date(),
         (dt.datetime.now() - relativedelta(bdays=45)).date())
示例#8
0
    def testNoYearFirstNoDayFirst(self):
        dtstr = '090107'

        # Should be MMDDYY
        self.assertEqual(parse(dtstr),
                         datetime(2007, 9, 1))

        self.assertEqual(parse(dtstr, yearfirst=False, dayfirst=False),
                         datetime(2007, 9, 1))
示例#9
0
    def testYearFirst(self):
        dtstr = '090107'

        # Should be MMDDYY
        self.assertEqual(parse(dtstr, yearfirst=True),
                         datetime(2009, 1, 7))

        self.assertEqual(parse(dtstr, yearfirst=True, dayfirst=False),
                         datetime(2009, 1, 7))
示例#10
0
    def testDayFirst(self):
        dtstr = '090107'

        # Should be DDMMYY
        self.assertEqual(parse(dtstr, dayfirst=True),
                         datetime(2007, 1, 9))

        self.assertEqual(parse(dtstr, yearfirst=False, dayfirst=True),
                         datetime(2007, 1, 9))
示例#11
0
 def test_bdays_zero(self):
     self.assertEqual("2014-11-15" + relativedelta(bdays=0),
                      datetime(2014, 11, 17))
     self.assertEqual("2014-11-17" + relativedelta(bdays=0),
                      datetime(2014, 11, 17))
     self.assertEqual("2014-11-15" - relativedelta(bdays=0),
                      datetime(2014, 11, 14))
     self.assertEqual("2014-11-14" - relativedelta(bdays=0),
                      datetime(2014, 11, 14))
示例#12
0
 def test_bdays_zero(self):
     self.assertEqual("2014-11-15" + relativedelta(bdays=0),
                      datetime(2014, 11, 17))
     self.assertEqual("2014-11-17" + relativedelta(bdays=0),
                      datetime(2014, 11, 17))
     self.assertEqual("2014-11-15" - relativedelta(bdays=0),
                      datetime(2014, 11, 14))
     self.assertEqual("2014-11-14" - relativedelta(bdays=0),
                      datetime(2014, 11, 14))
示例#13
0
文件: tests.py 项目: ryanss/bdateutil
 def test_datetime(self):
     self.assertEqual(datetime("2015-03-25 12:34"),
                      dt.datetime(2015, 3, 25, 12, 34))
     self.assertEqual(datetime(2015, 3, 15, 23, 45).month_end(),
                      datetime(2015, 3, 31, 23, 59, 59, 999999))
     self.assertEqual(datetime.now().date(), dt.datetime.now().date())
     self.assertEqual(datetime.now(bdays=-45).date(),
                      (dt.datetime.now() - relativedelta(bdays=45)).date())
     self.assertEqual(datetime(time("3:40")),
                      dt.datetime.combine(dt.datetime.today(),
                                          dt.time(3, 40, 0)))
示例#14
0
 def test_datetime(self):
     self.assertEqual(datetime("2015-03-25 12:34"),
                      dt.datetime(2015, 3, 25, 12, 34))
     self.assertEqual(datetime(2015, 3, 15, 23, 45).month_end(),
                      datetime(2015, 3, 31, 23, 59, 59, 999999))
     self.assertEqual(datetime.now().date(), dt.datetime.now().date())
     self.assertEqual(datetime.now(bdays=-45).date(),
                      (dt.datetime.now() - relativedelta(bdays=45)).date())
     self.assertEqual(datetime(time("3:40")),
                      dt.datetime.combine(dt.datetime.today(),
                                          dt.time(3, 40, 0)))
示例#15
0
 def test_radd_time(self):
     self.assertEqual("2015-01-02 16:45" + relativedelta(bminutes=+30),
                      datetime(2015, 1, 5, 9, 15))
     self.assertEqual(date(2015, 1, 2) + relativedelta(bminutes=+30),
                      datetime(2015, 1, 2, 9, 30))
     self.assertEqual(date(2014, 1, 3) + relativedelta(bdays=1, bhours=4),
                      datetime(2014, 1, 6, 13, 0))
     relativedelta.btstart = time(7, 30)
     self.assertEqual("2015-01-02 16:45" + relativedelta(bminutes=+30),
                      datetime(2015, 1, 5, 7, 45))
     self.assertEqual("2015-01-02 16:45" + relativedelta(bhours=+0.5),
                      datetime(2015, 1, 5, 7, 45))
     del relativedelta.btstart
示例#16
0
 def test_add(self):
     rd1 = relativedelta(years=+1,
                         months=+2,
                         bdays=+3,
                         days=+4,
                         bhours=+5,
                         bminutes=+6,
                         bseconds=+7,
                         hours=+8,
                         minutes=+9,
                         seconds=+10)
     rd2 = relativedelta(years=+10,
                         months=-9,
                         bdays=+8,
                         days=-7,
                         bhours=+6,
                         bminutes=-5,
                         bseconds=+4,
                         hours=-3,
                         minutes=+2,
                         seconds=-1)
     rd3 = relativedelta(years=+11,
                         months=-7,
                         bdays=+11,
                         days=-3,
                         bhours=+11,
                         bminutes=+1,
                         bseconds=+11,
                         hours=+5,
                         minutes=+11,
                         seconds=+9)
     self.assertEqual(rd1 + rd2, rd3)
     self.assertEqual(
         relativedelta(bdays=3) + date(2014, 1, 3), date(2014, 1, 8))
     rd4 = relativedelta(years=+1, months=+2, days=+1)
     rd5 = relativedelta(years=+12,
                         months=-5,
                         bdays=+11,
                         days=-2,
                         bhours=+11,
                         bminutes=+1,
                         bseconds=+11,
                         hours=+5,
                         minutes=+11,
                         seconds=+9)
     self.assertEqual(rd3 + rd4, rd5)
     self.assertEqual(
         date("2014-01-01") + relativedelta(weekday=FR), date(2014, 1, 3))
     self.assertEqual(
         datetime("2014-11-15 1:23") + relativedelta(bdays=1),
         datetime(2014, 11, 18, 1, 23))
示例#17
0
    def testFuzzyAMPMProblem(self):
        # Sometimes fuzzy parsing results in AM/PM flag being set without
        # hours - if it's fuzzy it should ignore that.
        s1 = "I have a meeting on March 1, 1974."
        s2 = "On June 8th, 2020, I am going to be the first man on Mars"

        # Also don't want any erroneous AM or PMs changing the parsed time
        s3 = "Meet me at the AM/PM on Sunset at 3:00 AM on December 3rd, 2003"
        s4 = "Meet me at 3:00AM on December 3rd, 2003 at the AM/PM on Sunset"

        self.assertEqual(parse(s1, fuzzy=True), datetime(1974, 3, 1))
        self.assertEqual(parse(s2, fuzzy=True), datetime(2020, 6, 8))
        self.assertEqual(parse(s3, fuzzy=True), datetime(2003, 12, 3, 3))
        self.assertEqual(parse(s4, fuzzy=True), datetime(2003, 12, 3, 3))
示例#18
0
    def testFuzzyAMPMProblem(self):
        # Sometimes fuzzy parsing results in AM/PM flag being set without
        # hours - if it's fuzzy it should ignore that.
        s1 = "I have a meeting on March 1, 1974."
        s2 = "On June 8th, 2020, I am going to be the first man on Mars"

        # Also don't want any erroneous AM or PMs changing the parsed time
        s3 = "Meet me at the AM/PM on Sunset at 3:00 AM on December 3rd, 2003"
        s4 = "Meet me at 3:00AM on December 3rd, 2003 at the AM/PM on Sunset"

        self.assertEqual(parse(s1, fuzzy=True), datetime(1974, 3, 1))
        self.assertEqual(parse(s2, fuzzy=True), datetime(2020, 6, 8))
        self.assertEqual(parse(s3, fuzzy=True), datetime(2003, 12, 3, 3))
        self.assertEqual(parse(s4, fuzzy=True), datetime(2003, 12, 3, 3))
示例#19
0
 def test_radd_time(self):
     self.assertEqual("2015-01-02 16:45" + relativedelta(bminutes=+30),
                      datetime(2015, 1, 5, 9, 15))
     self.assertEqual(
         date(2015, 1, 2) + relativedelta(bminutes=+30),
         datetime(2015, 1, 2, 9, 30))
     self.assertEqual(
         date(2014, 1, 3) + relativedelta(bdays=1, bhours=4),
         datetime(2014, 1, 6, 13, 0))
     relativedelta.btstart = time(7, 30)
     self.assertEqual("2015-01-02 16:45" + relativedelta(bminutes=+30),
                      datetime(2015, 1, 5, 7, 45))
     self.assertEqual("2015-01-02 16:45" + relativedelta(bhours=+0.5),
                      datetime(2015, 1, 5, 7, 45))
     del relativedelta.btstart
示例#20
0
    def enfold(dt, fold=1):
        """
        Provides a unified interface for assigning the ``fold`` attribute to
        datetimes both before and after the implementation of PEP-495.

        :param fold:
            The value for the ``fold`` attribute in the returned datetime. This
            should be either 0 or 1.

        :return:
            Returns an object for which ``getattr(dt, 'fold', 0)`` returns
            ``fold`` for all versions of Python. In versions prior to
            Python 3.6, this is a ``_DatetimeWithFold`` object, which is a
            subclass of :py:class:`datetime.datetime` with the ``fold``
            attribute added, if ``fold`` is 1.

        ..versionadded:: 2.6.0
        """
        if getattr(dt, 'fold', 0) == fold:
            return dt

        args = dt.timetuple()[:6]
        args += (dt.microsecond, dt.tzinfo)

        if fold:
            return _DatetimeWithFold(*args)
        else:
            return datetime(*args)
示例#21
0
 def test_isbday(self):
     self.assertFalse(isbday(date(2014, 1, 4)))
     self.assertFalse(isbday("2014-01-04"))
     self.assertTrue(isbday(date(2014, 1, 1)))
     self.assertTrue(isbday("2014-01-01"))
     self.assertFalse(isbday(date(2014, 1, 1), holidays=holidays.US()))
     self.assertTrue(isbday(datetime(2014, 1, 1, 16, 30)))
     self.assertTrue(isbday(datetime(2014, 1, 1, 17, 30)))
     self.assertFalse(
         isbday(datetime(2014, 1, 1, 16, 30), holidays=holidays.US()))
     self.assertFalse(
         isbday(datetime(2014, 1, 1, 17, 30), holidays=holidays.US()))
     isbday.holidays = holidays.US()
     self.assertFalse(isbday(date(2014, 1, 1)))
     self.assertFalse(isbday(date(2014, 7, 4)))
     self.assertTrue(isbday(date(2014, 7, 4), holidays=holidays.CA()))
示例#22
0
 def testFuzzyWithTokens(self):
     s = "Today is 25 of September of 2003, exactly " \
         "at 10:49:41 with timezone -03:00."
     self.assertEqual(
         parse(s, fuzzy_with_tokens=True),
         (datetime(2003, 9, 25, 10, 49, 41, tzinfo=self.brsttz),
          ('Today is ', 'of ', ', exactly at ', ' with timezone ', '.')))
示例#23
0
    def testParseWithNulls(self):
        # This relies on the from __future__ import unicode_literals, because
        # explicitly specifying a unicode literal is a syntax error in Py 3.2
        # May want to switch to u'...' if we ever drop Python 3.2 support.
        pstring = '\x00\x00August 29, 1924'

        self.assertEqual(parse(pstring), datetime(1924, 8, 29))
示例#24
0
文件: tz.py 项目: ryanss/bdateutil
    def enfold(dt, fold=1):
        """
        Provides a unified interface for assigning the ``fold`` attribute to
        datetimes both before and after the implementation of PEP-495.

        :param fold:
            The value for the ``fold`` attribute in the returned datetime. This
            should be either 0 or 1.

        :return:
            Returns an object for which ``getattr(dt, 'fold', 0)`` returns
            ``fold`` for all versions of Python. In versions prior to
            Python 3.6, this is a ``_DatetimeWithFold`` object, which is a
            subclass of :py:class:`datetime.datetime` with the ``fold``
            attribute added, if ``fold`` is 1.

        ..versionadded:: 2.6.0
        """
        if getattr(dt, 'fold', 0) == fold:
            return dt

        args = dt.timetuple()[:6]
        args += (dt.microsecond, dt.tzinfo)

        if fold:
            return _DatetimeWithFold(*args)
        else:
            return datetime(*args)
示例#25
0
 def test_isbday(self):
     self.assertFalse(isbday(date(2014, 1, 4)))
     self.assertFalse(isbday("2014-01-04"))
     self.assertTrue(isbday(date(2014, 1, 1)))
     self.assertTrue(isbday("2014-01-01"))
     self.assertFalse(isbday(date(2014, 1, 1), holidays=holidays.US()))
     self.assertTrue(isbday(datetime(2014, 1, 1, 16, 30)))
     self.assertTrue(isbday(datetime(2014, 1, 1, 17, 30)))
     self.assertFalse(isbday(datetime(2014, 1, 1, 16, 30),
                      holidays=holidays.US()))
     self.assertFalse(isbday(datetime(2014, 1, 1, 17, 30),
                      holidays=holidays.US()))
     isbday.holidays = holidays.US()
     self.assertFalse(isbday(date(2014, 1, 1)))
     self.assertFalse(isbday(date(2014, 7, 4)))
     self.assertTrue(isbday(date(2014, 7, 4), holidays=holidays.CA()))
示例#26
0
    def testParseWithNulls(self):
        # This relies on the from __future__ import unicode_literals, because
        # explicitly specifying a unicode literal is a syntax error in Py 3.2
        # May want to switch to u'...' if we ever drop Python 3.2 support.
        pstring = '\x00\x00August 29, 1924'

        self.assertEqual(parse(pstring),
                         datetime(1924, 8, 29))
示例#27
0
 def testFuzzyWithTokens(self):
     s = "Today is 25 of September of 2003, exactly " \
         "at 10:49:41 with timezone -03:00."
     self.assertEqual(parse(s, fuzzy_with_tokens=True),
                      (datetime(2003, 9, 25, 10, 49, 41,
                                tzinfo=self.brsttz),
                      ('Today is ', 'of ', ', exactly at ',
                       ' with timezone ', '.')))
示例#28
0
 def test_radd(self):
     self.assertEqual(date(2014, 1, 3) + relativedelta(bdays=2),
                      date(2014, 1, 7))
     self.assertEqual(date(2014, 1, 7) + relativedelta(bdays=-2),
                      date(2014, 1, 3))
     self.assertEqual(date(2014, 2, 3) + relativedelta(bdays=-19),
                      date(2014, 1, 7))
     self.assertEqual(date(2014, 1, 3) + relativedelta(bdays=1.5),
                      datetime(2014, 1, 6, 13, 0))
示例#29
0
 def testMicrosecondPrecisionErrorReturns(self):
     # One more precision issue, discovered by Eric Brown.  This should
     # be the last one, as we're no longer using floating points.
     for ms in [100001, 100000, 99999, 99998,
                 10001,  10000,  9999,  9998,
                  1001,   1000,   999,   998,
                   101,    100,    99,    98]:
         dt = datetime(2008, 2, 27, 21, 26, 1, ms)
         self.assertEqual(parse(dt.isoformat()), dt)
示例#30
0
文件: tests.py 项目: ryanss/bdateutil
 def test_radd(self):
     self.assertEqual(date(2014, 1, 3) + relativedelta(bdays=2),
                      date(2014, 1, 7))
     self.assertEqual(date(2014, 1, 7) + relativedelta(bdays=-2),
                      date(2014, 1, 3))
     self.assertEqual(date(2014, 2, 3) + relativedelta(bdays=-19),
                      date(2014, 1, 7))
     self.assertEqual(date(2014, 1, 3) + relativedelta(bdays=1.5),
                      datetime(2014, 1, 6, 13, 0))
示例#31
0
 def testMicrosecondPrecisionErrorReturns(self):
     # One more precision issue, discovered by Eric Brown.  This should
     # be the last one, as we're no longer using floating points.
     for ms in [
             100001, 100000, 99999, 99998, 10001, 10000, 9999, 9998, 1001,
             1000, 999, 998, 101, 100, 99, 98
     ]:
         dt = datetime(2008, 2, 27, 21, 26, 1, ms)
         self.assertEqual(parse(dt.isoformat()), dt)
示例#32
0
 def testIncreasingCTime(self):
     # This test will check 200 different years, every month, every day,
     # every hour, every minute, every second, and every weekday, using
     # a delta of more or less 1 year, 1 month, 1 day, 1 minute and
     # 1 second.
     delta = timedelta(days=365 + 31 + 1, seconds=1 + 60 + 60 * 60)
     dt = datetime(1900, 1, 1, 0, 0, 0, 0)
     for i in range(200):
         self.assertEqual(parse(dt.ctime()), dt)
         dt += delta
示例#33
0
 def test_init(self):
     self.assertEqual(relativedelta(date(2014, 1, 7), date(2014, 1, 3)),
                      relativedelta(days=4, bdays=2))
     self.assertEqual(relativedelta(date(2014, 1, 31), date(2014, 1, 1)),
                      relativedelta(days=30, bdays=22))
     self.assertEqual(relativedelta(date(2014, 2, 1), date(2014, 1, 1)),
                      relativedelta(months=1, bdays=22))
     self.assertEqual(relativedelta(date(2014, 2, 2), date(2014, 1, 1)),
                      relativedelta(months=1, days=1, bdays=22))
     self.assertEqual(relativedelta(date(2014, 1, 1), date(2014, 2, 2)),
                      relativedelta(months=-1, days=-1, bdays=-22))
     self.assertEqual(relativedelta(datetime(2017, 1, 16),
                                    datetime(2017, 1, 16),
                                    holidays=holidays.US()),
                      relativedelta(bdays=0))
     self.assertEqual(relativedelta(datetime(2017, 1, 17),
                                    datetime(2017, 1, 16),
                                    holidays=holidays.US()),
                      relativedelta(days=1, bdays=0))
示例#34
0
文件: tests.py 项目: ryanss/bdateutil
 def test_isbday(self):
     self.assertFalse(isbday(date(2014, 1, 4)))
     self.assertFalse(isbday("2014-01-04"))
     self.assertTrue(isbday(date(2014, 1, 1)))
     self.assertTrue(isbday("2014-01-01"))
     self.assertFalse(isbday(date(2014, 1, 1), holidays=holidays.US()))
     self.assertTrue(isbday(datetime(2014, 1, 1, 16, 30)))
     self.assertTrue(isbday(datetime(2014, 1, 1, 17, 30)))
     self.assertFalse(isbday(datetime(2014, 1, 1, 16, 30),
                      holidays=holidays.US()))
     self.assertFalse(isbday(datetime(2014, 1, 1, 17, 30),
                      holidays=holidays.US()))
     bdateutil.HOLIDAYS = holidays.Canada()
     self.assertFalse(isbday(date(2014, 7, 1)))
     self.assertTrue(isbday(date(2014, 7, 4)))
     self.assertFalse(isbday(date(2014, 1, 1)))
     self.assertTrue(isbday(date(2014, 7, 1), holidays=holidays.US()))
     self.assertFalse(isbday(date(2014, 7, 4), holidays=holidays.US()))
     bdateutil.HOLIDAYS = []
示例#35
0
 def test_isbday(self):
     self.assertFalse(isbday(date(2014, 1, 4)))
     self.assertFalse(isbday("2014-01-04"))
     self.assertTrue(isbday(date(2014, 1, 1)))
     self.assertTrue(isbday("2014-01-01"))
     self.assertFalse(isbday(date(2014, 1, 1), holidays=holidays.US()))
     self.assertTrue(isbday(datetime(2014, 1, 1, 16, 30)))
     self.assertTrue(isbday(datetime(2014, 1, 1, 17, 30)))
     self.assertFalse(isbday(datetime(2014, 1, 1, 16, 30),
                      holidays=holidays.US()))
     self.assertFalse(isbday(datetime(2014, 1, 1, 17, 30),
                      holidays=holidays.US()))
     bdateutil.HOLIDAYS = holidays.Canada()
     self.assertFalse(isbday(date(2014, 7, 1)))
     self.assertTrue(isbday(date(2014, 7, 4)))
     self.assertFalse(isbday(date(2014, 1, 1)))
     self.assertTrue(isbday(date(2014, 7, 1), holidays=holidays.US()))
     self.assertFalse(isbday(date(2014, 7, 4), holidays=holidays.US()))
     bdateutil.HOLIDAYS = []
示例#36
0
 def testIncreasingCTime(self):
     # This test will check 200 different years, every month, every day,
     # every hour, every minute, every second, and every weekday, using
     # a delta of more or less 1 year, 1 month, 1 day, 1 minute and
     # 1 second.
     delta = timedelta(days=365+31+1, seconds=1+60+60*60)
     dt = datetime(1900, 1, 1, 0, 0, 0, 0)
     for i in range(200):
         self.assertEqual(parse(dt.ctime()), dt)
         dt += delta
示例#37
0
    def testCustomParserInfo(self):
        # Custom parser info wasn't working, as Michael Elsdörfer discovered.
        from bdateutil.parser import parserinfo, parser

        class myparserinfo(parserinfo):
            MONTHS = parserinfo.MONTHS[:]
            MONTHS[0] = ("Foo", "Foo")
        myparser = parser(myparserinfo())
        dt = myparser.parse("01/Foo/2007")
        self.assertEqual(dt, datetime(2007, 1, 1))
示例#38
0
 def test_rsub(self):
     self.assertEqual(
         date(2014, 1, 7) - relativedelta(bdays=2), date(2014, 1, 3))
     self.assertEqual(
         date(2014, 1, 3) - relativedelta(bdays=-2), date(2014, 1, 7))
     self.assertEqual(
         date(2014, 2, 3) - relativedelta(bdays=19), date(2014, 1, 7))
     self.assertEqual("2014-11-15" - relativedelta(bdays=1),
                      datetime(2014, 11, 14))
     self.assertEqual(date.today() - relativedelta(bdays=+45),
                      date.today() + relativedelta(bdays=-45))
示例#39
0
 def test_rsub(self):
     self.assertEqual(date(2014, 1, 7) - relativedelta(bdays=2),
                      date(2014, 1, 3))
     self.assertEqual(date(2014, 1, 3) - relativedelta(bdays=-2),
                      date(2014, 1, 7))
     self.assertEqual(date(2014, 2, 3) - relativedelta(bdays=19),
                      date(2014, 1, 7))
     self.assertEqual("2014-11-15" - relativedelta(bdays=1),
                      datetime(2014, 11, 14))
     self.assertEqual(date.today() - relativedelta(bdays=+45),
                      date.today() + relativedelta(bdays=-45))
示例#40
0
    def testParseUnicodeWords(self):
        class rus_parserinfo(parserinfo):
            MONTHS = [("янв", "Январь"), ("фев", "Февраль"), ("мар", "Март"),
                      ("апр", "Апрель"), ("май", "Май"), ("июн", "Июнь"),
                      ("июл", "Июль"), ("авг", "Август"), ("сен", "Сентябрь"),
                      ("окт", "Октябрь"), ("ноя", "Ноябрь"),
                      ("дек", "Декабрь")]

        self.assertEqual(
            parse('10 Сентябрь 2015 10:20', parserinfo=rus_parserinfo()),
            datetime(2015, 9, 10, 10, 20))
示例#41
0
    def testCustomParserInfo(self):
        # Custom parser info wasn't working, as Michael Elsdörfer discovered.
        from bdateutil.parser import parserinfo, parser

        class myparserinfo(parserinfo):
            MONTHS = parserinfo.MONTHS[:]
            MONTHS[0] = ("Foo", "Foo")

        myparser = parser(myparserinfo())
        dt = myparser.parse("01/Foo/2007")
        self.assertEqual(dt, datetime(2007, 1, 1))
示例#42
0
 def test_parse(self):
     self.assertEqual(list(rrule(BDAILY, count=4, dtstart="2014-01-01")),
                      [datetime(2014, 1, 1, 0, 0),
                       datetime(2014, 1, 2, 0, 0),
                       datetime(2014, 1, 3, 0, 0),
                       datetime(2014, 1, 6, 0, 0)])
     self.assertEqual(list(rrule(BDAILY, count=4, dtstart="2014-01-01",
                                 until="01/04/2014")),
                      [datetime(2014, 1, 1, 0, 0),
                       datetime(2014, 1, 2, 0, 0),
                       datetime(2014, 1, 3, 0, 0)])
示例#43
0
文件: tests.py 项目: ryanss/bdateutil
 def test_parse(self):
     self.assertEqual(list(rrule(BDAILY, count=4, dtstart="2014-01-01")),
                      [datetime(2014, 1, 1, 0, 0),
                       datetime(2014, 1, 2, 0, 0),
                       datetime(2014, 1, 3, 0, 0),
                       datetime(2014, 1, 6, 0, 0)])
     self.assertEqual(list(rrule(BDAILY, count=4, dtstart="2014-01-01",
                                 until="01/04/2014")),
                      [datetime(2014, 1, 1, 0, 0),
                       datetime(2014, 1, 2, 0, 0),
                       datetime(2014, 1, 3, 0, 0)])
示例#44
0
文件: tests.py 项目: ryanss/bdateutil
 def test_add(self):
     rd1 = relativedelta(years=+1, months=+2, bdays=+3, days=+4,
                         bhours=+5, bminutes=+6, bseconds=+7,
                         hours=+8, minutes=+9, seconds=+10)
     rd2 = relativedelta(years=+10, months=-9, bdays=+8, days=-7,
                         bhours=+6, bminutes=-5, bseconds=+4,
                         hours=-3, minutes=+2, seconds=-1)
     rd3 = relativedelta(years=+11, months=-7, bdays=+11, days=-3,
                         bhours=+11, bminutes=+1, bseconds=+11,
                         hours=+5, minutes=+11, seconds=+9)
     self.assertEqual(rd1 + rd2, rd3)
     self.assertEqual(relativedelta(bdays=3) + date(2014, 1, 3),
                      date(2014, 1, 8))
     rd4 = relativedelta(years=+1, months=+2, days=+1)
     rd5 = relativedelta(years=+12, months=-5, bdays=+11, days=-2,
                         bhours=+11, bminutes=+1, bseconds=+11,
                         hours=+5, minutes=+11, seconds=+9)
     self.assertEqual(rd3 + rd4, rd5)
     self.assertEqual(date("2014-01-01") + relativedelta(weekday=FR),
                      date(2014, 1, 3))
     self.assertEqual(datetime("2014-11-15 1:23") + relativedelta(bdays=1),
                      datetime(2014, 11, 18, 1, 23))
示例#45
0
 def test_radd_time(self):
     self.assertEqual(datetime("2015-01-02 16:45") +
                      relativedelta(bminutes=+30),
                      datetime(2015, 1, 5, 9, 15))
     self.assertEqual(date(2015, 1, 2) + relativedelta(bminutes=+30),
                      datetime(2015, 1, 2, 9, 30))
     self.assertEqual(date(2014, 1, 3) + relativedelta(bdays=1, bhours=4),
                      datetime(2014, 1, 6, 13, 0))
     bdateutil.BTSTART = time(7, 30)
     self.assertEqual(datetime("2015-01-02 16:45") +
                      relativedelta(bminutes=+30),
                      datetime(2015, 1, 5, 7, 45))
     self.assertEqual(datetime("2015-01-02 16:45") +
                      relativedelta(bhours=+0.5),
                      datetime(2015, 1, 5, 7, 45))
     bdateutil.BTSTART = time(9, 0)
示例#46
0
文件: tests.py 项目: ryanss/bdateutil
 def test_radd_time(self):
     self.assertEqual(datetime("2015-01-02 16:45") +
                      relativedelta(bminutes=+30),
                      datetime(2015, 1, 5, 9, 15))
     self.assertEqual(date(2015, 1, 2) + relativedelta(bminutes=+30),
                      datetime(2015, 1, 2, 9, 30))
     self.assertEqual(date(2014, 1, 3) + relativedelta(bdays=1, bhours=4),
                      datetime(2014, 1, 6, 13, 0))
     bdateutil.BTSTART = time(7, 30)
     self.assertEqual(datetime("2015-01-02 16:45") +
                      relativedelta(bminutes=+30),
                      datetime(2015, 1, 5, 7, 45))
     self.assertEqual(datetime("2015-01-02 16:45") +
                      relativedelta(bhours=+0.5),
                      datetime(2015, 1, 5, 7, 45))
     bdateutil.BTSTART = time(9, 0)
示例#47
0
    def setUp(self):
        self.tzinfos = {"BRST": -10800}
        self.brsttz = tzoffset("BRST", -10800)
        self.default = datetime(2003, 9, 25)

        # Parser should be able to handle bytestring and unicode
        base_str = '2014-05-01 08:00:00'
        try:
            # Python 2.x
            self.uni_str = unicode(base_str)
            self.str_str = str(base_str)
        except NameError:
            self.uni_str = str(base_str)
            self.str_str = bytes(base_str.encode())
示例#48
0
    def testDuckTyping(self):
        # We want to support arbitrary classes that implement the stream
        # interface.

        class StringPassThrough(object):
            def __init__(self, stream):
                self.stream = stream

            def read(self, *args, **kwargs):
                return self.stream.read(*args, **kwargs)

        dstr = StringPassThrough(StringIO('2014 January 19'))

        self.assertEqual(parse(dstr), datetime(2014, 1, 19))
示例#49
0
    def setUp(self):
        self.tzinfos = {"BRST": -10800}
        self.brsttz = tzoffset("BRST", -10800)
        self.default = datetime(2003, 9, 25)

        # Parser should be able to handle bytestring and unicode
        base_str = '2014-05-01 08:00:00'
        try:
            # Python 2.x
            self.uni_str = unicode(base_str)
            self.str_str = str(base_str)
        except NameError:
            self.uni_str = str(base_str)
            self.str_str = bytes(base_str.encode())
示例#50
0
    def testDuckTyping(self):
        # We want to support arbitrary classes that implement the stream
        # interface.

        class StringPassThrough(object):
            def __init__(self, stream):
                self.stream = stream

            def read(self, *args, **kwargs):
                return self.stream.read(*args, **kwargs)


        dstr = StringPassThrough(StringIO('2014 January 19'))

        self.assertEqual(parse(dstr), datetime(2014, 1, 19))
示例#51
0
 def test_start_end(self):
     dt = datetime(2016, 12, 30, 5)
     self.assertEqual(dt.day_start(), datetime(2016, 12, 30, 0))
     self.assertEqual(dt.day_end(),
                      datetime(2016, 12, 30, 23, 59, 59, 999999))
     self.assertEqual(dt.month_start(), datetime(2016, 12, 1, 0))
     self.assertEqual(dt.month_end(),
                      datetime(2016, 12, 31, 23, 59, 59, 999999))
     self.assertEqual(dt.year_start(), datetime(2016, 1, 1, 0))
     self.assertEqual(dt.year_end(),
                      datetime(2016, 12, 31, 23, 59, 59, 999999))
     d = date(2015, 2, 13)
     self.assertEqual(d.month_start(), date(2015, 2, 1))
     self.assertEqual(d.month_end(), date(2015, 2, 28))
     self.assertEqual(d.year_start(), date(2015, 1, 1))
     self.assertEqual(d.year_end(), date(2015, 12, 31))
示例#52
0
文件: tests.py 项目: ryanss/bdateutil
 def test_start_end(self):
     dt = datetime(2016, 12, 30, 5)
     self.assertEqual(dt.day_start(), datetime(2016, 12, 30, 0))
     self.assertEqual(dt.day_end(),
                      datetime(2016, 12, 30, 23, 59, 59, 999999))
     self.assertEqual(dt.month_start(), datetime(2016, 12, 1, 0))
     self.assertEqual(dt.month_end(),
                      datetime(2016, 12, 31, 23, 59, 59, 999999))
     self.assertEqual(dt.year_start(), datetime(2016, 1, 1, 0))
     self.assertEqual(dt.year_end(),
                      datetime(2016, 12, 31, 23, 59, 59, 999999))
     d = date(2015, 2, 13)
     self.assertEqual(d.month_start(), date(2015, 2, 1))
     self.assertEqual(d.month_end(), date(2015, 2, 28))
     self.assertEqual(d.year_start(), date(2015, 1, 1))
     self.assertEqual(d.year_end(), date(2015, 12, 31))
示例#53
0
 def test_add_sub(self):
     self.assertEqual(datetime("2014-11-15 1:23").add(bdays=1),
                      datetime(2014, 11, 18, 1, 23))
     self.assertEqual(datetime("2014-11-15 1:23").sub(bdays=-1),
                      datetime(2014, 11, 18, 1, 23))
     self.assertEqual(date(2016, 1, 1).add(hours=2, minutes=4),
                      datetime(2016, 1, 1, 2, 4))
     self.assertEqual(datetime(2016, 1, 1, 0).sub(days=1),
                      datetime(2015, 12, 31, 0))
     ush = holidays.US()
     self.assertEqual(date(2016, 12, 30).add(bdays=1, holidays=ush),
                      date(2017, 1, 3))
     self.assertEqual(date(2016, 12, 31).add(bdays=0, holidays=ush),
                      date(2017, 1, 3))
     self.assertEqual(date(2016, 12, 31).add(bdays=1, holidays=ush),
                      date(2017, 1, 4))
     self.assertEqual(time(3, 40).add(hours=5, minutes=25), time(9, 5))
示例#54
0
文件: tests.py 项目: ryanss/bdateutil
 def test_add_sub(self):
     self.assertEqual(datetime("2014-11-15 1:23").add(bdays=1),
                      datetime(2014, 11, 18, 1, 23))
     self.assertEqual(datetime("2014-11-15 1:23").sub(bdays=-1),
                      datetime(2014, 11, 18, 1, 23))
     self.assertEqual(date(2016, 1, 1).add(hours=2, minutes=4),
                      datetime(2016, 1, 1, 2, 4))
     self.assertEqual(datetime(2016, 1, 1, 0).sub(days=1),
                      datetime(2015, 12, 31, 0))
     ush = holidays.US()
     self.assertEqual(date(2016, 12, 30).add(bdays=1, holidays=ush),
                      date(2017, 1, 3))
     self.assertEqual(date(2016, 12, 31).add(bdays=0, holidays=ush),
                      date(2017, 1, 3))
     self.assertEqual(date(2016, 12, 31).add(bdays=1, holidays=ush),
                      date(2017, 1, 4))
     self.assertEqual(time(3, 40).add(hours=5, minutes=25), time(9, 5))
示例#55
0
    def testParseUnicodeWords(self):

        class rus_parserinfo(parserinfo):
            MONTHS = [("янв", "Январь"),
                      ("фев", "Февраль"),
                      ("мар", "Март"),
                      ("апр", "Апрель"),
                      ("май", "Май"),
                      ("июн", "Июнь"),
                      ("июл", "Июль"),
                      ("авг", "Август"),
                      ("сен", "Сентябрь"),
                      ("окт", "Октябрь"),
                      ("ноя", "Ноябрь"),
                      ("дек", "Декабрь")]

        self.assertEqual(parse('10 Сентябрь 2015 10:20',
                               parserinfo=rus_parserinfo()),
                         datetime(2015, 9, 10, 10, 20))
示例#56
0
文件: tests.py 项目: ryanss/bdateutil
 def test_init_time(self):
     self.assertEqual(relativedelta(datetime(2015, 1, 5, 9, 15),
                                    datetime(2015, 1, 2, 16, 45)),
                      relativedelta(days=2, hours=16, minutes=30,
                                    bminutes=30))
     self.assertEqual(relativedelta(datetime(2015, 1, 20, 21, 22),
                                    datetime(2015, 1, 9, 3, 0)),
                      relativedelta(days=11, hours=18, minutes=22,
                                    bdays=7, bhours=8, bminutes=0))
     self.assertEqual(relativedelta(datetime(2015, 1, 20, 21, 22),
                                    datetime(2015, 1, 9, 3, 0),
                                    holidays=holidays.US()),
                      relativedelta(days=11, hours=18, minutes=22,
                                    bdays=6, bhours=8, bminutes=0))
     bdateutil.HOLIDAYS = holidays.CA()
     self.assertEqual(relativedelta(datetime(2015, 1, 20, 21, 22),
                                    datetime(2015, 1, 9, 3, 0)),
                      relativedelta(days=11, hours=18, minutes=22,
                                    bdays=7, bhours=8, bminutes=0))
     bdateutil.HOLIDAYS = []
     self.assertEqual(relativedelta(time(3, 40), time(2, 37)),
                      relativedelta(hours=1, minutes=3))
示例#57
0
 def test_init_time(self):
     self.assertEqual(relativedelta(datetime(2015, 1, 5, 9, 15),
                                    datetime(2015, 1, 2, 16, 45)),
                      relativedelta(days=2, hours=16, minutes=30,
                                    bminutes=30))
     self.assertEqual(relativedelta(datetime(2015, 1, 20, 21, 22),
                                    datetime(2015, 1, 9, 3, 0)),
                      relativedelta(days=11, hours=18, minutes=22,
                                    bdays=7, bhours=8, bminutes=0))
     self.assertEqual(relativedelta(datetime(2015, 1, 20, 21, 22),
                                    datetime(2015, 1, 9, 3, 0),
                                    holidays=holidays.US()),
                      relativedelta(days=11, hours=18, minutes=22,
                                    bdays=6, bhours=8, bminutes=0))
     bdateutil.HOLIDAYS = holidays.CA()
     self.assertEqual(relativedelta(datetime(2015, 1, 20, 21, 22),
                                    datetime(2015, 1, 9, 3, 0)),
                      relativedelta(days=11, hours=18, minutes=22,
                                    bdays=7, bhours=8, bminutes=0))
     bdateutil.HOLIDAYS = []
     self.assertEqual(relativedelta(time(3, 40), time(2, 37)),
                      relativedelta(hours=1, minutes=3))
示例#58
0
 def testDateCommandFormat(self):
     self.assertEqual(
         parse("Thu Sep 25 10:36:28 BRST 2003", tzinfos=self.tzinfos),
         datetime(2003, 9, 25, 10, 36, 28, tzinfo=self.brsttz))
示例#59
0
 def testUnambiguousDayFirstYearFirst(self):
     dtstr = '2015 09 25'
     self.assertEqual(parse(dtstr, dayfirst=True, yearfirst=True),
                      datetime(2015, 9, 25))
示例#60
0
 def testDayFirstYearFirst(self):
     dtstr = '090107'
     # Should be YYDDMM
     self.assertEqual(parse(dtstr, yearfirst=True, dayfirst=True),
                      datetime(2009, 7, 1))