Add support for aP and Ap to python format_date as well

This commit is contained in:
Kovid Goyal 2025-04-05 10:29:19 +05:30
parent 75b513834a
commit a7c02a1fdf
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 12 additions and 17 deletions

View File

@ -289,11 +289,8 @@ def timestampfromdt(dt, assume_utc=True):
# Format date functions {{{
def fd_format_hour(dt, ampm, hr):
l = len(hr)
h = dt.hour
if ampm:
h = h%12
if l == 1:
h = strftime('%I' if ampm else '%H', t=dt.timetuple())
if len(hr) == 1:
return f'{h}'
return f'{h:02}'
@ -314,9 +311,9 @@ def fd_format_second(dt, ampm, sec):
def fd_format_ampm(dt, ampm, ap):
res = strftime('%p', t=dt.timetuple())
if ap == 'AP':
if ap in ('aP', 'Ap'):
return res
return res.lower()
return res.upper() if ap in ('A', 'AP') else res.lower()
def fd_format_day(dt, ampm, dy):
@ -364,16 +361,14 @@ def fd_repl_func(dt, ampm, mo):
def format_date(dt, format, assume_utc=False, as_utc=False):
''' Return a date formatted as a string using a subset of Qt's formatting codes '''
if not format:
format = 'dd MMM yyyy'
format = format or 'dd MMM yyyy'
if not isinstance(dt, datetime):
dt = datetime.combine(dt, dtime())
if hasattr(dt, 'tzinfo'):
if dt.tzinfo is None:
dt = dt.replace(tzinfo=_utc_tz if assume_utc else
_local_tz)
dt = dt.replace(tzinfo=_utc_tz if assume_utc else _local_tz)
dt = dt.astimezone(_utc_tz if as_utc else _local_tz)
if format == 'iso':
@ -384,7 +379,7 @@ def format_date(dt, format, assume_utc=False, as_utc=False):
repl_func = partial(fd_repl_func, dt, 'ap' in format.lower())
return re.sub(
r'(s{1,2})|(m{1,2})|(h{1,2})|(ap)|(AP)|(d{1,4}|M{1,4}|(?:yyyy|yy))',
r'(s{1,2})|(m{1,2})|(h{1,2})|(ap)|(AP)|(aP)|(Ap)|(d{1,4}|M{1,4}|(?:yyyy|yy))',
repl_func, format)
# }}}

View File

@ -350,18 +350,18 @@ def atomic_write(base, name, content):
def run_rapydscript_tests():
from calibre.gui2 import must_use_qt
must_use_qt()
from calibre.utils.webengine import create_script, insert_scripts, secure_webengine, setup_default_profile, setup_fake_protocol, setup_profile
setup_fake_protocol()
setup_default_profile()
from urllib.parse import parse_qs
from qt.core import QApplication, QByteArray, QEventLoop, QUrl
from qt.webengine import QWebEnginePage, QWebEngineProfile, QWebEngineScript, QWebEngineUrlRequestJob, QWebEngineUrlSchemeHandler
from calibre.constants import FAKE_HOST, FAKE_PROTOCOL
from calibre.gui2 import must_use_qt
from calibre.gui2.viewer.web_view import send_reply
from calibre.utils.webengine import create_script, insert_scripts, secure_webengine, setup_default_profile, setup_fake_protocol, setup_profile
must_use_qt()
setup_fake_protocol()
setup_default_profile()
base = base_dir()
rapydscript_dir = os.path.join(base, 'src', 'pyj')