zoukankan      html  css  js  c++  java
  • c++ 日期时间工具

    简易的日期时间工具:

    #include <iostream>
    #include <sstream>
    #include <time.h>
    #include<chrono>
    #include<iomanip>
    #include<glog/logging.h>
    
    namespace DateTimeUtils {
        //获取当前时间日期
        inline std::string GetCurrentDateTimeStr(const char* format = "%Y-%m-%d %H-%M-%S")
        {
            auto now = std::time(nullptr);
            struct tm tm = { 0 };
            localtime_s(&tm, &now);
            std::ostringstream oss;
            oss << std::put_time(&tm, format);
            return  oss.str();
        }
        //格式化时间戳到utc日期时间字符串
        inline std::string FormatDateTimeUTC(const time_t& time, const char* format = "%Y-%m-%d %H-%M-%S") {
            struct tm tm = { 0 };
            //检查入参是否合法
            localtime_s(&tm, &time);
            if (mktime(&tm) != time) {
                DLOG(ERROR) << "FormatDateTimeUTC Error invalidate input time:" << time;
                return "";
            }
            gmtime_s(&tm, &time);
            std::ostringstream oss;
            oss << std::put_time(&tm, format);
            return oss.str();
        }
        //格式化时间戳到本地日期时间字符串
        inline std::string FormatDateTimeLocal(const time_t& time, const char* format = "%Y-%m-%d %H-%M-%S") {
            struct tm tm = { 0 };
            localtime_s(&tm, &time);
            if (mktime(&tm) != time) {
                DLOG(ERROR) << "FormatDateTimeLocal Error invalidate input time:" << time;
                return "";
            }
            std::ostringstream oss;
            oss << std::put_time(&tm, format);
            return oss.str();
        }
        //根据日期字符串获得时间戳(秒)
        inline time_t GetTimeStampByDate(const char* date, const char* format = "%Y-%m-%d %H-%M-%S") {
            struct std::tm tm = { 0 };
            std::istringstream ss(date);
            ss >> std::get_time(&tm, format);
            if (ss.fail()) {
                DLOG(ERROR) << "Error GetTimeStamp date:  " << date << " format:" << format;
                return 0;
            }
            return mktime(&tm);
        }
    
        //获取毫秒时间戳
        inline time_t GetTimeStamp()
        {
            auto now = std::chrono::system_clock::now();
            return std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()).count();
        }
    
    }
  • 相关阅读:
    异常处理
    创建数据库的连接(不同的方法)
    PDO类的封装
    理论的认知
    toolBar
    发送指内容的短信
    KVO tableView header悬浮效果
    KVO
    cocoaPods 真机报错
    cocoaPods 部署本版和项目部署版本不一致的错误
  • 原文地址:https://www.cnblogs.com/wolbo/p/14171762.html
Copyright © 2011-2022 走看看