Skip to content

Commit 9304d92

Browse files
authored
Merge pull request #162 from 5j9/dirctive-pat
strptime: define some new directive patterns
2 parents 023547b + 650a5e8 commit 9304d92

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

jdatetime/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,12 +611,16 @@ def aslocale(self, locale):
611611
date.max = date(MAXYEAR, 12, 30)
612612

613613
_DIRECTIVE_PATTERNS = {
614+
'%A': '(?:' + '|'.join([*date.j_weekdays_fa, *date.j_weekdays_en]) + ')',
615+
'%a': '(?:' + '|'.join([*date.j_weekdays_fa, *date.j_weekdays_short_en]) + ')',
614616
'%Y': r'(?P<Y>\d{4})',
615617
'%y': r'(?P<y>\d{2})',
616618
'%m': r'(?P<m>\d{1,2})',
617619
'%d': r'(?P<d>\d{1,2})',
618620
'%H': r'(?P<H>\d{1,2})',
621+
'%j': r'[0-3]\d\d',
619622
'%M': r'(?P<M>\d{1,2})',
623+
'%p': '(?:' + '|'.join([*date.j_ampm_fa.values(), *date.j_ampm_en.values()]) + ')',
620624
'%S': r'(?P<S>\d{1,2})',
621625
'%f': r'(?P<f>\d{1,6})',
622626
'%B': r'(?P<B>[a-zA-Z\u0600-\u06EF\uFB8A\u067E\u0686\u06AF]{2,12})',

tests/test_jdatetime.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,14 @@ def test_strptime_invalid_date_string_z_directive(self):
436436
with self.assertRaises(ValueError, msg=msg):
437437
jdatetime.datetime.strptime(date_string, date_format)
438438

439+
def test_strptime_A_p_j_directives(self):
440+
dt = jdatetime.datetime(1401, 2, 3, 4)
441+
fmt = '%Y %m %d %H %j %p %A %a'
442+
self.assertEqual(
443+
jdatetime.datetime.strptime(dt.strftime(fmt), fmt),
444+
dt,
445+
)
446+
439447
def test_timetz(self):
440448
teh = TehranTime()
441449

0 commit comments

Comments
 (0)