diff options
Diffstat (limited to 'Tests/CMakeTests/String-TIMESTAMP-UnixTime.cmake')
-rw-r--r-- | Tests/CMakeTests/String-TIMESTAMP-UnixTime.cmake | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Tests/CMakeTests/String-TIMESTAMP-UnixTime.cmake b/Tests/CMakeTests/String-TIMESTAMP-UnixTime.cmake new file mode 100644 index 0000000..a93e7f5 --- /dev/null +++ b/Tests/CMakeTests/String-TIMESTAMP-UnixTime.cmake @@ -0,0 +1,22 @@ +string(TIMESTAMP timestamp "[%Y-%m-%d %H:%M:%S] %s" UTC) + +string(TIMESTAMP unix_time "%s") + +string(TIMESTAMP year "%Y" UTC) +string(TIMESTAMP days "%j" UTC) + +# Doing proper date calculations here to verify unix timestamps +# could be error prone. +# At the very least use some safe lower and upper bounds to +# see if we are somewhere in the right region. + +math(EXPR years_since_epoch "${year} - 1970") +math(EXPR lower_bound "((${years_since_epoch} * 365) + ${days}) * 86400") +math(EXPR upper_bound "((${years_since_epoch} * 366) + ${days}) * 86400") + + +if(unix_time GREATER lower_bound AND unix_time LESS upper_bound) + message("~${unix_time}~") +else() + message(FATAL_ERROR "${timestamp} unix time not in expected range [${lower_bound}, ${upper_bound}]") +endif() |