* Normalize datetime values to UTC in blog plugin
Fixes#7705
Normalize datetime values to UTC in blog plugin to handle offset-naive and offset-aware datetimes correctly.
* Import `timezone` from `datetime` in `material/plugins/blog/structure/options.py`.
* Modify `pre_validation` method to set `tzinfo=timezone.utc` for datetime values.
---
For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/squidfunk/mkdocs-material/issues/7705?shareId=XXXX-XXXX-XXXX-XXXX).
* Normalize datetime values to UTC in blog plugin
Fixes#7705
+ Move changes to src directory
* 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/