diff --git a/sphinx/builders/html/__init__.py b/sphinx/builders/html/__init__.py
index 922397bd4..db0c9247b 100644
--- a/sphinx/builders/html/__init__.py
+++ b/sphinx/builders/html/__init__.py
@@ -9,7 +9,7 @@ import re
import sys
import warnings
import zlib
-from datetime import datetime
+from datetime import datetime, timezone
from os import path
from typing import IO, Any, Iterable, Iterator, List, Tuple, Type
from urllib.parse import quote
@@ -432,10 +432,11 @@ class StandaloneHTMLBuilder(Builder):
logger.debug(
'[build target] targetname %r(%s), template(%s), docname %r(%s)',
targetname,
- datetime.utcfromtimestamp(targetmtime),
- datetime.utcfromtimestamp(template_mtime),
+ datetime.fromtimestamp(targetmtime, tz=timezone.utc),
+ datetime.fromtimestamp(template_mtime, tz=timezone.utc),
docname,
- datetime.utcfromtimestamp(path.getmtime(self.env.doc2path(docname))),
+ datetime.fromtimestamp(path.getmtime(self.env.doc2path(docname)),
+ tz=timezone.utc),
)
yield docname
except OSError:
diff --git a/sphinx/util/i18n.py b/sphinx/util/i18n.py
index 268633200..177f42840 100644
--- a/sphinx/util/i18n.py
+++ b/sphinx/util/i18n.py
@@ -193,9 +193,9 @@ def format_date(
# See https://wiki.debian.org/ReproducibleBuilds/TimestampsProposal
source_date_epoch = os.getenv('SOURCE_DATE_EPOCH')
if source_date_epoch is not None:
- date = datetime.utcfromtimestamp(float(source_date_epoch))
+ date = datetime.fromtimestamp(float(source_date_epoch), tz=timezone.utc)
else:
- date = datetime.now(timezone.utc).astimezone()
+ date = datetime.now(tz=timezone.utc).astimezone()
result = []
tokens = date_format_re.split(format)