12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /*
- * TimeHelper.h
- *
- * Created on: May 22, 2017
- * Author: guoxs
- */
- #ifndef _UTILS_TIME_HELPER_H_
- #define _UTILS_TIME_HELPER_H_
- #include <time.h>
- #include "manager/LanguageManager.h"
- /**
- * @brief 时间操作帮助类
- */
- class TimeHelper {
- public:
- /**
- * @brief 获取当前日期时间,单位为毫秒
- */
- static long long getCurrentTime();
- /**
- * @brief 获取当前日期
- */
- static struct tm * getDateTime();
- /**
- * @brief 设置日期
- */
- static bool setDateTime(struct tm *ptm);
- /**
- * @brief 设置日期
- * @param pDate 格式:2017-09-13 16:00:00
- */
- static bool setDateTime(const char *pDate);
- static time_t StringToDatetime(std::string str)
- {
- char *cha = (char*)str.data(); // 将string转换成char*。
- tm tm_; // 定义tm结构体。
- int year, month, day, hour, minute, second;// 定义时间的各个int临时变量。
- sscanf(cha, "%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &second);// 将string存储的日期时间,转换为int临时变量。
- tm_.tm_year = year - 1900; // 年,由于tm结构体存储的是从1900年开始的时间,所以tm_year为int临时变量减去1900。
- tm_.tm_mon = month - 1; // 月,由于tm结构体的月份存储范围为0-11,所以tm_mon为int临时变量减去1。
- tm_.tm_mday = day; // 日。
- tm_.tm_hour = hour - 8; // 时。
- tm_.tm_min = minute; // 分。
- tm_.tm_sec = second; // 秒。
- tm_.tm_isdst = 0; // 非夏令时。
- time_t t_ = mktime(&tm_); // 将tm结构体转换成time_t格式。
- return t_; // 返回值。
- }
- static std::string DatetimeToString(tm *t){
- //struct tm *t = TimeHelper::getDateTime();
- char timeStr[50];
- static const char *day[] = {
- LANGUAGEMANAGER->getValue("Sunday").c_str(),
- LANGUAGEMANAGER->getValue("Monday").c_str(),
- LANGUAGEMANAGER->getValue("Tuesday").c_str(),
- LANGUAGEMANAGER->getValue("Wednesday").c_str(),
- LANGUAGEMANAGER->getValue("Thursday").c_str(),
- LANGUAGEMANAGER->getValue("Friday").c_str(),
- LANGUAGEMANAGER->getValue("Saturday").c_str()};
- std::string formatStr = "%s %d"+LANGUAGEMANAGER->getValue("Year")+"%02d"+LANGUAGEMANAGER->getValue("Month")+"%02d"+LANGUAGEMANAGER->getValue("Day")+" %02d:%02d:%02d";
- sprintf(timeStr, formatStr.c_str(), day[t->tm_wday],1900 + t->tm_year, t->tm_mon + 1, t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
- std::string result = timeStr;
- return result;
- }
- static time_t getDateline() {
- // time_t timep;
- // struct tm *p;
- //
- // time(&timep);
- // p = gmtime(&timep);
- struct tm *tm_ = TimeHelper::getDateTime();
- // tm_->tm_year = tm_->tm_year - 1900; // 年,由于tm结构体存储的是从1900年开始的时间,所以tm_year为int临时变量减去1900。
- // tm_->tm_mon = tm_->tm_mon - 1; // 月,由于tm结构体的月份存储范围为0-11,所以tm_mon为int临时变量减去1。
- // tm_->tm_mday = tm_->tm_mday; // 日。
- tm_->tm_hour = tm_->tm_hour - 8; // 时。
- // tm_->tm_min = tm_->tm_min; // 分。
- // tm_->tm_sec = tm_->tm_sec; // 秒。
- // tm_->tm_isdst = 0; // 非夏令时。
- time_t t_ = mktime(tm_); // 将tm结构体转换成time_t格式。
- return t_; // 返回值。
- }
- };
- #endif /* _UTILS_TIME_HELPER_H_ */
|