Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
d = DateFromJulianDay(2450022.5, "standard")
assert (d.year == 1995)
assert (d.month == 11)
assert (d.day == 1)
assert (d.hour == 0)
assert (d.minute == 0)
assert (d.second == 0)
# cftime issue #52
d = DateFromJulianDay(1684958.5,calendar='gregorian')
assert (d.year == -100)
assert (d.month == 3)
assert (d.day == 2)
assert (d.hour == 0)
assert (d.minute == 0)
assert (d.second == 0)
d = DateFromJulianDay(1684958.5,calendar='standard')
assert (d.year == -100)
assert (d.month == 3)
assert (d.day == 2)
assert (d.hour == 0)
assert (d.minute == 0)
assert (d.second == 0)
# test dayofwk, dayofyr attribute setting (cftime issue #13)
d1 = DatetimeGregorian(2020,2,29)
d2 = real_datetime(2020,2,29)
assert (d1.dayofwk == d2.dayofwk == 5)
assert (d1.dayofyr == d2.dayofyr == 60)
d1 = DatetimeGregorian(2020,2,29,23,59,59)
d2 = real_datetime(2020,2,29,23,59,59)
assert (d1.dayofwk == d2.dayofwk == 5)
assert (d1.dayofyr == d2.dayofyr == 60)
d1 = DatetimeGregorian(2020,2,28,23,59,59)
assert_equal(str(d), str(date))
# test proleptic julian calendar.
d = datetime(1858, 11, 17, 12)
t = self.cdftime_jul.date2num(d)
assert_almost_equal(t, 7528932.0)
d1 = datetime(1582, 10, 4, 23)
d2 = datetime(1582, 10, 15, 0)
assert_almost_equal(
self.cdftime_jul.date2num(d1) + 241.0, self.cdftime_jul.date2num(d2))
date = self.cdftime_jul.num2date(t)
self.assertTrue(str(d) == str(date))
# test julian day from date, date from julian day
d = datetime(1858, 11, 17)
mjd = JulianDayFromDate(d)
assert_almost_equal(mjd, 2400000.5)
date = DateFromJulianDay(mjd)
self.assertTrue(str(date) == str(d))
# test iso 8601 units string
d = datetime(1970, 1, 1, 1)
t = self.cdftime_iso.date2num(d)
assert_equal(np.around(t), 3600)
# test fix for issue 75 (seconds hit 60 at end of month,
# day goes out of range).
t = 733499.0
d = num2date(t, units='days since 0001-01-01 00:00:00')
assert_equal(d.strftime(dateformat), '2009-04-01 00:00:00')
# test edge case of issue 75 for numerical problems
for t in (733498.999, 733498.9999, 733498.99999, 733498.999999, 733498.9999999):
d = num2date(t, units='days since 0001-01-01 00:00:00')
t2 = date2num(d, units='days since 0001-01-01 00:00:00')
assert(abs(t2 - t) < 1e-5) # values should be less than second
# Check equality testing
d = DateFromJulianDay(2450022.5, "standard")
assert (d.year == 1995)
assert (d.month == 11)
assert (d.day == 1)
assert (d.hour == 0)
assert (d.minute == 0)
assert (d.second == 0)
# cftime issue #52
d = DateFromJulianDay(1684958.5,calendar='gregorian')
assert (d.year == -100)
assert (d.month == 3)
assert (d.day == 2)
assert (d.hour == 0)
assert (d.minute == 0)
assert (d.second == 0)
d = DateFromJulianDay(1684958.5,calendar='standard')
assert (d.year == -100)
assert (d.month == 3)
assert (d.day == 2)
assert (d.hour == 0)
assert (d.minute == 0)
assert (d.second == 0)
# test dayofwk, dayofyr attribute setting (cftime issue #13)
d1 = DatetimeGregorian(2020,2,29)
d2 = real_datetime(2020,2,29)
assert (d1.dayofwk == d2.dayofwk == 5)
assert (d1.dayofyr == d2.dayofyr == 60)
d1 = DatetimeGregorian(2020,2,29,23,59,59)
d2 = real_datetime(2020,2,29,23,59,59)
assert (d1.dayofwk == d2.dayofwk == 5)
assert (d1.dayofyr == d2.dayofyr == 60)
d1 = DatetimeGregorian(2020,2,28,23,59,59)
assert_equal(str(d), str(date))
# test proleptic julian calendar.
d = datetime(1858, 11, 17, 12)
t = self.cdftime_jul.date2num(d)
assert_almost_equal(t, 7528932.0)
d1 = datetime(1582, 10, 4, 23)
d2 = datetime(1582, 10, 15, 0)
assert_almost_equal(
self.cdftime_jul.date2num(d1) + 241.0, self.cdftime_jul.date2num(d2))
date = self.cdftime_jul.num2date(t)
self.assertTrue(str(d) == str(date))
# test julian day from date, date from julian day
d = datetime(1858, 11, 17)
mjd = JulianDayFromDate(d)
assert_almost_equal(mjd, 2400000.5)
date = DateFromJulianDay(mjd)
self.assertTrue(str(date) == str(d))
# test iso 8601 units string
d = datetime(1970, 1, 1, 1)
t = self.cdftime_iso.date2num(d)
assert_equal(numpy.around(t), 3600)
# test fix for issue 75 (seconds hit 60 at end of month,
# day goes out of range).
t = 733499.0
d = num2date(t, units='days since 0001-01-01 00:00:00')
dateformat = '%Y-%m-%d %H:%M:%S'
assert_equal(d.strftime(dateformat), '2009-04-01 00:00:00')
# test edge case of issue 75 for numerical problems
for t in (733498.999, 733498.9999, 733498.99999, 733498.999999, 733498.9999999):
d = num2date(t, units='days since 0001-01-01 00:00:00')
t2 = date2num(d, units='days since 0001-01-01 00:00:00')
assert(abs(t2 - t) < 1e-5) # values should be less than second
assert(np.abs((d-utc_date).total_seconds()) < 1.e-3)
# also test with negative values to cover 2nd code path
d = num2date(-1, units, calendar="standard")
assert(np.abs((d - \
(utc_date-timedelta(hours=1))).total_seconds()) < 1.e-3)
n = date2num(utc_date, units, calendar="standard")
# n should always be 0 as all units refer to the same point in time
self.assertEqual(n, 0)
# explicitly test 2nd code path for date2num
units = "hours since 2000-01-01 22:30+04:00"
n = date2num(utc_date, units, calendar="julian")
# n should always be 0 as all units refer to the same point in time
assert_almost_equal(n, 0)
# cftime issue #49
d = DateFromJulianDay(2450022.5, "standard")
assert (d.year == 1995)
assert (d.month == 11)
assert (d.day == 1)
assert (d.hour == 0)
assert (d.minute == 0)
assert (d.second == 0)
# cftime issue #52
d = DateFromJulianDay(1684958.5,calendar='gregorian')
assert (d.year == -100)
assert (d.month == 3)
assert (d.day == 2)
assert (d.hour == 0)
assert (d.minute == 0)
assert (d.second == 0)
d = DateFromJulianDay(1684958.5,calendar='standard')
assert (d.year == -100)
assert_equal(str(d), str(date))
# test proleptic julian calendar.
d = datetime(1858, 11, 17, 12)
t = self.cdftime_jul.date2num(d)
assert_almost_equal(t, 7528932.0)
d1 = datetime(1582, 10, 4, 23)
d2 = datetime(1582, 10, 15, 0)
assert_almost_equal(
self.cdftime_jul.date2num(d1) + 241.0, self.cdftime_jul.date2num(d2))
date = self.cdftime_jul.num2date(t)
self.assertTrue(str(d) == str(date))
# test julian day from date, date from julian day
d = datetime(1858, 11, 17)
mjd = JulianDayFromDate(d)
assert_almost_equal(mjd, 2400000.5)
date = DateFromJulianDay(mjd)
self.assertTrue(str(date) == str(d))
# test iso 8601 units string
d = datetime(1970, 1, 1, 1)
t = self.cdftime_iso.date2num(d)
assert_equal(np.around(t), 3600)
# test fix for issue 75 (seconds hit 60 at end of month,
# day goes out of range).
t = 733499.0
d = num2date(t, units='days since 0001-01-01 00:00:00')
assert_equal(d.strftime(dateformat), '2009-04-01 00:00:00')
# test edge case of issue 75 for numerical problems
for t in (733498.999, 733498.9999, 733498.99999, 733498.999999, 733498.9999999):
d = num2date(t, units='days since 0001-01-01 00:00:00')
t2 = date2num(d, units='days since 0001-01-01 00:00:00')
assert(abs(t2 - t) < 1e-5) # values should be less than second
# Check equality testing
assert(np.abs((d-utc_date).total_seconds()) < 1.e-3)
# also test with negative values to cover 2nd code path
d = num2date(-1, units, calendar="standard")
assert(np.abs((d - \
(utc_date-timedelta(hours=1))).total_seconds()) < 1.e-3)
n = date2num(utc_date, units, calendar="standard")
# n should always be 0 as all units refer to the same point in time
self.assertEqual(n, 0)
# explicitly test 2nd code path for date2num
units = "hours since 2000-01-01 22:30+04:00"
n = date2num(utc_date, units, calendar="julian")
# n should always be 0 as all units refer to the same point in time
assert_almost_equal(n, 0)
# cftime issue #49
d = DateFromJulianDay(2450022.5, "standard")
assert (d.year == 1995)
assert (d.month == 11)
assert (d.day == 1)
assert (d.hour == 0)
assert (d.minute == 0)
assert (d.second == 0)
# cftime issue #52
d = DateFromJulianDay(1684958.5,calendar='gregorian')
assert (d.year == -100)
assert (d.month == 3)
assert (d.day == 2)
assert (d.hour == 0)
assert (d.minute == 0)
assert (d.second == 0)
d = DateFromJulianDay(1684958.5,calendar='standard')
assert (d.year == -100)