---
 CMakeLists.txt |   22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -38,15 +38,27 @@ else()
   if(UNIX)
     set(_vite_SAVED_LC_ALL "$ENV{LC_ALL}")
     set(ENV{LC_ALL} C)
+    set(_vite_SAVED_TZ "$ENV{TZ}")
+    set(ENV{TZ} "")
 
-    execute_process(COMMAND date +"%B %Y"
-      OUTPUT_VARIABLE VITE_DATE
-      ERROR_VARIABLE vite_date_error
-      RESULT_VARIABLE vite_date_result
-      OUTPUT_STRIP_TRAILING_WHITESPACE )
+    if (NOT $ENV{SOURCE_DATE_EPOCH} STREQUAL "")
+      execute_process(COMMAND date -d @$ENV{SOURCE_DATE_EPOCH} +"%B %Y"
+        OUTPUT_VARIABLE VITE_DATE
+        ERROR_VARIABLE vite_date_error
+        RESULT_VARIABLE vite_date_result
+        OUTPUT_STRIP_TRAILING_WHITESPACE )
+    else()
+      execute_process(COMMAND date +"%B %Y"
+        OUTPUT_VARIABLE VITE_DATE
+        ERROR_VARIABLE vite_date_error
+        RESULT_VARIABLE vite_date_result
+        OUTPUT_STRIP_TRAILING_WHITESPACE )
+    endif()
 
     # restore the previous LC_ALL
     set(ENV{LC_ALL} ${_vite_SAVED_LC_ALL})
+    # restore the previous TZ
+    set(ENV{TZ} ${_vite_SAVED_TZ})
   else()
     set(VITE_DATE "")
   endif()
