chenluhua1980
2025-11-18 fcc340fc812ee692f72fa1774c114e6f4d788f5c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#pragma once
#include <string>
#include <chrono>
#include <optional>
#include <utility>
 
enum class QuickRange { Today, Last7Days, ThisMonth, ThisYear };
using TP = std::chrono::system_clock::time_point;
class CToolUnits
{
public:
    CToolUnits();
    ~CToolUnits();
 
public:
    static std::string timeToString(ULONGLONG time);
    static std::string timeToString2(ULONGLONG time);
    static std::string timeToString3(ULONGLONG time);
    static ULONGLONG stringToTime(const char* pszTime);
    static CString& floatToString1(float value, CString& strOut);
    static CString& floatToString3(float value, CString& strOut);
    static ULONGLONG getTimestamp();
    static time_t getUnixTimestamp();
    static void createDir(const char* pszDir);
    static BOOL copyTextToClipboard(CWnd* pWnd, const CString& strText);
    static std::string getCurrentExePath();
    static bool isFile(const std::string& path);
    static bool isDirectory(const std::string& path);
    static int toInt32(const char* pBuffer);
    static int toInt16(const char* pBuffer);
    static BOOL getBit(const char c, int index);
    static void setBit(char* p, int index);
    static void setDlgItemDouble(CWnd* pWnd, int nCtrlId, double value);
    static std::vector<CString> GetFileNamesInDirectory(const CString& strFolderPath, const CString& strExtension);
    static std::string getRecipePath();
    static std::string getCurrentTimeString();
    static bool startsWith(const std::string& str, const std::string& prefix);
    static std::string& toHexString(int value, std::string& strOut);
    static void convertString(const char* pszBuffer, int size, std::string& strOut);
    static inline std::chrono::system_clock::time_point FileTimeToTimePointUTC(const FILETIME& ftUtc);
    static bool GetCtrlTimeUtc(const CDateTimeCtrl& ctrl,
        std::chrono::system_clock::time_point& outUtc);
    static bool GetCtrlDateRangeUtc_StartOfDay(const CDateTimeCtrl& ctrl,
        std::chrono::system_clock::time_point& outUtc);
    static bool GetCtrlDateRangeUtc_EndOfDay(const CDateTimeCtrl& ctrl,
        std::chrono::system_clock::time_point& outUtc);
    static std::chrono::system_clock::time_point CToolUnits::LocalSTtoUtcTP(const SYSTEMTIME& stLocal);
    static SYSTEMTIME CToolUnits::MakeLocalST(int y, int m, int d, int hh, int mi, int ss, int ms);
    static bool IsLeap(int y);
    static int DaysInMonth(int y, int m);
    static void GetTodayYMD_Local(int& y, int& m, int& d);
    static void LocalCalendarMinusDays(int& y, int& m, int& d, int nDays);
    static std::pair<std::chrono::system_clock::time_point,
        std::chrono::system_clock::time_point>
        CalcQuickRangeUtc(QuickRange r);
    static bool containsCI(const std::string& hay, const std::string& needle);
    static std::string TimePointToLocalString(const std::optional<TP>& tp,
        const char* fmt = "%Y-%m-%d %H:%M:%S");
    static std::string TimePointToUtcString(const std::optional<TP>& tp,
        const char* fmt = "%Y-%m-%d %H:%M:%S");
    static std::string TimePointToLocalStringMs(const std::optional<TP>& tp);
    static std::string NowStrSec();
    static std::wstring AnsiToWString(const std::string& str);
    static std::string WStringToAnsi(const std::wstring& wstr);
};