1 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2    file Copyright.txt or https://cmake.org/licensing for details.  */
3 #pragma once
4 
5 #include "cmConfigure.h" // IWYU pragma: keep
6 
7 #include <ctime>
8 #include <string>
9 
10 /** \class cmTimestamp
11  * \brief Utility class to generate string representation of a timestamp
12  *
13  */
14 class cmTimestamp
15 {
16 public:
17   std::string CurrentTime(const std::string& formatString, bool utcFlag) const;
18 
19   std::string FileModificationTime(const char* path,
20                                    const std::string& formatString,
21                                    bool utcFlag) const;
22 
23   std::string CreateTimestampFromTimeT(time_t timeT, std::string formatString,
24                                        bool utcFlag) const;
25 
26 private:
27   time_t CreateUtcTimeTFromTm(struct tm& timeStruct) const;
28 
29   std::string AddTimestampComponent(char flag, struct tm& timeStruct,
30                                     time_t timeT) const;
31 };
32