zoukankan      html  css  js  c++  java
  • API 实现类似于 C# DateTime 的类

    本文链接: https://www.cnblogs.com/jqdy/p/15073952.html

      C# 的 DateTime 类使用起来非常方便,std 可以方便的实现类似的功能,但是会占用稍大的空间,在服务程序的编制中稍显不足。

      下面,利用 windows API 实现了一个类,可以实现系统时间字符串的输出。

     1 /////////////////////////////////////////////////////////////////////////////////////
     2 // 说明:基于 API 实现类似于C#的DateTime类
     3 // 1. 宏 DATETIME_STRING_BUFFER_SIZE 定义了形如 2020.01.01 00:00:00.000 字符串的内存占用。
     4 // 2. 强制枚举 Format 定义了输出何种字符串。
     5 /////////////////////////////////////////////////////////////////////////////////////
     6 #include <windows.h>
     7 
     8 // 时间字符串缓冲区大小(含末尾)
     9 #define DATETIME_STRING_BUFFER_SIZE 25    
    10 
    11 // 类似于 C# 中DateTime的系统时间类
    12 class DateTime
    13 {
    14 
    15 private:
    16 
    17     SYSTEMTIME m_stTime; // 系统时间
    18 
    19     TCHAR m_pszTimeStr[DATETIME_STRING_BUFFER_SIZE];
    20 
    21 public:
    22     
    23     enum class Format :UCHAR// 时间字符串格式枚举
    24     {
    25         YYYY_MM_DD_hh_mm_ss,    //形如:2020.01.01 01:01:01
    26         YYYY_MM_DD_hh_mm_ss_mmm    //形如:2020.01.01 01:01:01.001
    27     };
    28 
    29     DateTime()
    30     {
    31         GetLocalTime(&m_stTime);
    32     }
    33 
    34     ~DateTime();
    35 
    36     ///////////////////////////////////////////////
    37     // 更新时间为当前的系统时间
    38     // 返回: 类引用
    39     ///////////////////////////////////////////////
    40     DateTime& Now()
    41     {
    42         GetLocalTime(&m_stTime);
    43         return *this;
    44     }
    45 
    46     ///////////////////////////////////////////////
    47     // 名称: 输出时间字符串
    48     // 参数:
    49     //    format: 时间字符串格式枚举
    50     // 返回: 时间字符串指针
    51     ///////////////////////////////////////////////
    52     PTSTR ToString(Format format)
    53     {
    54         PCTSTR pszFormat[] =
    55         {
    56             TEXT("%04d.%02d.%02d %02d:%02d:%02d"),
    57             TEXT("%04d.%02d.%02d %02d:%02d:%02d.%03d")
    58         };
    59 
    60         PCTSTR pszSelect = nullptr;
    61 
    62         switch (format)
    63         {
    64         case DateTime::Format::YYYY_MM_DD_hh_mm_ss:
    65             pszSelect = pszFormat[0];
    66             break;
    67         case DateTime::Format::YYYY_MM_DD_hh_mm_ss_mmm:
    68             pszSelect = pszFormat[1];
    69             break;
    70         }
    71 
    72         StringCchPrintf(
    73             m_pszTimeStr,
    74             DATETIME_STRING_BUFFER_SIZE,
    75             pszSelect,
    76             m_stTime.wYear,
    77             m_stTime.wMonth,
    78             m_stTime.wDay,
    79             m_stTime.wHour,
    80             m_stTime.wMinute,
    81             m_stTime.wSecond
    82         );
    83 
    84         return m_pszTimeStr;
    85     }
    86 };

       使用时:

    1 // ......
    2 DateTime dt;
    3 PTSTR pszTimeStr = dt.Now().ToString(DateTime::Format::YYYY_MM_DD_hh_mm_ss_mmm);
    4 //......
  • 相关阅读:
    板邓:解决Visual Studio 2017 安装程序清单签名验证失败
    板邓:PHP获取当前页面url地址、参数
    板邓:【WordPress文件解读】wp-config.php
    板邓:【WordPress文件解读】wp-load.php
    板邓:【WordPress文件解读】wp-blog-header.php
    读取符号库文件
    创建空间参考
    针对乱码中文进行编辑
    根据图层路径选择文件(存储)
    springboot实现数据库中数据导出Excel功能
  • 原文地址:https://www.cnblogs.com/jqdy/p/15073952.html
Copyright © 2011-2022 走看看