Skip to content

Commit abfac1a

Browse files
Switched to Babel's format_datetime to allow for time in formatted dates (#6981)
* Use Babel's `format_datetime`, not `format_date` I am using MkDocs-Material 9.5.15 and Babel 2.14.0. When setting the config value `blog.post_date_format: "yyyy-MM-dd hh:mm:ss"`, the blog plugin crashes during compilation with the error "date objects have no hour field". I believe this is occurring because the plugin provides a `datetime` to `babel.dates.format_date`, which upcasts it to a plain, timeless, `date`. Making this change to use `babel.dates.format_datetime` instead resolved the error and demonstrated expected behavior. While I recognize that it is likely uncommon for a blog to want to include sub-date timestamps in any of these fields, I believe that the current documentation, > The format string must adhere to babel's pattern syntax and should not contain whitespace implies that _any_ of Babel's pattern markers are acceptable here. I would consider > The format string must adhere to Babel's pattern syntax for calendar dates and should not contain whitespace to also be a sufficient fix for this case. ---- Thank you for your effort in creating this project; it has been a wonderful benefit to my team, and this is the first minor problem we've had in months of using it. * Make the change in src/, not material/
1 parent 01b2dd1 commit abfac1a

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

Diff for: material/plugins/blog/plugin.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import posixpath
2626
import yaml
2727

28-
from babel.dates import format_date
28+
from babel.dates import format_datetime
2929
from datetime import datetime
3030
from jinja2 import pass_context
3131
from jinja2.runtime import Context
@@ -783,7 +783,7 @@ def _format_path_for_pagination(self, view: View, page: int):
783783
# Format date
784784
def _format_date(self, date: datetime, format: str, config: MkDocsConfig):
785785
locale: str = config.theme["language"].replace("-", "_")
786-
return format_date(date, format = format, locale = locale)
786+
return format_datetime(date, format = format, locale = locale)
787787

788788
# Format date for post
789789
def _format_date_for_post(self, date: datetime, config: MkDocsConfig):

Diff for: src/plugins/blog/plugin.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import posixpath
2626
import yaml
2727

28-
from babel.dates import format_date
28+
from babel.dates import format_datetime
2929
from datetime import datetime
3030
from jinja2 import pass_context
3131
from jinja2.runtime import Context
@@ -783,7 +783,7 @@ def _format_path_for_pagination(self, view: View, page: int):
783783
# Format date
784784
def _format_date(self, date: datetime, format: str, config: MkDocsConfig):
785785
locale: str = config.theme["language"].replace("-", "_")
786-
return format_date(date, format = format, locale = locale)
786+
return format_datetime(date, format = format, locale = locale)
787787

788788
# Format date for post
789789
def _format_date_for_post(self, date: datetime, config: MkDocsConfig):

0 commit comments

Comments
 (0)