diff --git a/src/xfel_calibrate/calibrate.py b/src/xfel_calibrate/calibrate.py
index 8ffcc29aa14a3763ca110b56298c908b62ada903..fa14605bf1068aa43b0e512332b607ed0afb0b74 100755
--- a/src/xfel_calibrate/calibrate.py
+++ b/src/xfel_calibrate/calibrate.py
@@ -11,7 +11,7 @@ import stat
 import sys
 import textwrap
 import warnings
-from datetime import datetime
+from datetime import datetime, timezone
 from pathlib import Path
 from subprocess import DEVNULL, call, check_call, check_output
 from typing import List, Union
@@ -610,7 +610,7 @@ def run(argv=None):
 
     # request_time is in local timezone
     if args["request_time"] == "Now":
-        request_time = datetime.now()
+        request_time = datetime.now(tz=timezone.utc)
     else:
         request_time = datetime.fromisoformat(args["request_time"])
 
@@ -819,7 +819,7 @@ def run(argv=None):
     print("Calibration work directory (including Slurm .out files):")
     print(" ", cal_work_dir)
 
-    submission_time = datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
+    submission_time = datetime.now(tz=timezone.utc)
 
     # Launch the calibration work
     if args["no_cluster_job"]:
@@ -845,8 +845,8 @@ def run(argv=None):
                 'author': author,
                 'report_to': report_to,
                 'in_folder': folder,
-                'request_time': request_time.strftime("%Y-%m-%dT%H:%M:%S"),
-                'submission_time': submission_time,
+                'request_time': request_time.isoformat(),
+                'submission_time': submission_time.isoformat(),
                 }
 
     joblist.append(run_finalize(
diff --git a/src/xfel_calibrate/finalize.py b/src/xfel_calibrate/finalize.py
index 41b3f9dd4b84f61a666647064959b966ba915543..94343c45ea1d0947f933635a60fedb4bc06870ba 100644
--- a/src/xfel_calibrate/finalize.py
+++ b/src/xfel_calibrate/finalize.py
@@ -1,6 +1,6 @@
 import re
 import sys
-from datetime import datetime
+from datetime import datetime, timezone
 from importlib.machinery import SourceFileLoader
 from os import chdir, listdir, path
 from pathlib import Path
@@ -145,7 +145,7 @@ def get_job_info(jobs: List[str], fmt: List[str]) -> List[List[str]]:
 
 
 def make_timing_summary(cal_work_dir: Path, job_times: List[List[str]],
-                        job_time_fmt: List[str], pipeline_times: Dict[str, str]):
+                        job_time_fmt: List[str], pipeline_times: Dict[str, datetime]):
     """
     Create an rst file with timing summary of executed notebooks
 
@@ -160,6 +160,8 @@ def make_timing_summary(cal_work_dir: Path, job_times: List[List[str]],
                     Runtime summary
                     ===============
 
+                    All timestamps are shown in local (Hamburg) time.
+
                     .. math::
                         {% for line in time_table %}
                         {{ line }}
@@ -176,10 +178,12 @@ def make_timing_summary(cal_work_dir: Path, job_times: List[List[str]],
                     ''')
 
     time_vals = [
-        ["Time of Request", pipeline_times["request-time"]],
-        ["Job submission", pipeline_times["submission-time"]],
-        ["Report compilation", pipeline_times["report-compilation-time"]],
-    ]
+        [title, pipeline_times[k].astimezone(None).strftime("%Y-%m-%d %H:%M:%S")]
+        for (title, k) in [
+            ["Time of Request", "request-time"],
+            ["Job submission", "submission-time"],
+            ["Report compilation", "report-compilation-time"],
+    ]]
 
     with (cal_work_dir / "timing_summary.rst").open("w+") as fd:
         time_table = tabulate.tabulate(time_vals, tablefmt="latex",
@@ -384,9 +388,9 @@ def finalize(joblist, finaljob, cal_work_dir, out_path, version, title, author,
     job_time_fmt = 'JobID,Start,End,Elapsed,Suspended,State'.split(',')
     job_time_summary = get_job_info(joblist, job_time_fmt)
     pipeline_time_summary = {
-        "request-time": request_time,
-        "submission-time": submission_time,
-        "report-compilation-time": datetime.now().strftime("%Y-%m-%dT%H:%M:%S"),
+        "request-time": datetime.fromisoformat(request_time),
+        "submission-time": datetime.fromisoformat(submission_time),
+        "report-compilation-time": datetime.now(timezone.utc),
     }
     make_timing_summary(cal_work_dir, job_time_summary, job_time_fmt, pipeline_time_summary)
     metadata.update(