mirror of
				https://gitlab.com/ytdl-org/youtube-dl.git
				synced 2025-11-04 08:37:07 -05:00 
			
		
		
		
	[utils] Improve parse_iso8601
This commit is contained in:
		@@ -425,6 +425,8 @@ class TestUtil(unittest.TestCase):
 | 
			
		||||
        self.assertEqual(parse_iso8601('2014-03-23T22:04:26+0000'), 1395612266)
 | 
			
		||||
        self.assertEqual(parse_iso8601('2014-03-23T22:04:26Z'), 1395612266)
 | 
			
		||||
        self.assertEqual(parse_iso8601('2014-03-23T22:04:26.1234Z'), 1395612266)
 | 
			
		||||
        self.assertEqual(parse_iso8601('2015-09-29T08:27:31.727'), 1443515251)
 | 
			
		||||
        self.assertEqual(parse_iso8601('2015-09-29T08-27-31.727'), None)
 | 
			
		||||
 | 
			
		||||
    def test_strip_jsonp(self):
 | 
			
		||||
        stripped = strip_jsonp('cb ([ {"id":"532cb",\n\n\n"x":\n3}\n]\n);')
 | 
			
		||||
 
 | 
			
		||||
@@ -814,9 +814,11 @@ def parse_iso8601(date_str, delimiter='T', timezone=None):
 | 
			
		||||
    if date_str is None:
 | 
			
		||||
        return None
 | 
			
		||||
 | 
			
		||||
    date_str = re.sub(r'\.[0-9]+', '', date_str)
 | 
			
		||||
 | 
			
		||||
    if timezone is None:
 | 
			
		||||
        m = re.search(
 | 
			
		||||
            r'(\.[0-9]+)?(?:Z$| ?(?P<sign>\+|-)(?P<hours>[0-9]{2}):?(?P<minutes>[0-9]{2})$)',
 | 
			
		||||
            r'(?:Z$| ?(?P<sign>\+|-)(?P<hours>[0-9]{2}):?(?P<minutes>[0-9]{2})$)',
 | 
			
		||||
            date_str)
 | 
			
		||||
        if not m:
 | 
			
		||||
            timezone = datetime.timedelta()
 | 
			
		||||
@@ -829,9 +831,12 @@ def parse_iso8601(date_str, delimiter='T', timezone=None):
 | 
			
		||||
                timezone = datetime.timedelta(
 | 
			
		||||
                    hours=sign * int(m.group('hours')),
 | 
			
		||||
                    minutes=sign * int(m.group('minutes')))
 | 
			
		||||
    date_format = '%Y-%m-%d{0}%H:%M:%S'.format(delimiter)
 | 
			
		||||
    dt = datetime.datetime.strptime(date_str, date_format) - timezone
 | 
			
		||||
    return calendar.timegm(dt.timetuple())
 | 
			
		||||
    try:
 | 
			
		||||
        date_format = '%Y-%m-%d{0}%H:%M:%S'.format(delimiter)
 | 
			
		||||
        dt = datetime.datetime.strptime(date_str, date_format) - timezone
 | 
			
		||||
        return calendar.timegm(dt.timetuple())
 | 
			
		||||
    except ValueError:
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def unified_strdate(date_str, day_first=True):
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user