gpt4 book ai didi

c++ - C++中的日期格式

转载 作者:行者123 更新时间:2023-11-28 04:30:52 26 4
gpt4 key购买 nike

这是我的类(class)

#ifndef DATE_H
#define DATE_H

#include <initializer_list>
#include <string>

class Date {
public:
/**
* @brief default constructor
*/
Date();

/**
* @brief constructor with arguments
*/
Date(int t_year, int t_month, int t_day, int t_hour, int t_minute);

/**
* @brief constructor with a string
*/
Date(const std::string &dateString);
/**
* @brief return the year of a Date
* @return a integer indicate the year of a date
*/
int getYear(void) const;

/**
* @brief set the year of a date
* @param a integer indicate the new year of a date
*/
void setYear(const int t_year);

/**
* @brief return the month of a Date
* @return a integer indicate the month of a date
*/
int getMonth(void) const;

/**
* @brief set the month of a date
* @param a integer indicate the new month of a date
*/
void setMonth(const int t_month);

/**
* @brief return the day of a Date
* @return a integer indicate the day of a date
*/
int getDay(void) const;

/**
* @brief set the day of a date
* @param a integer indicate the new day of a date
*/
void setDay(const int t_day);

/**
* @brief return the hour of a Date
* @return a integer indicate the hour of a date
*/
int getHour(void) const;

/**
* @brief set the hour of a date
* @param a integer indicate the new hour of a date
*/
void setHour(const int t_hour);

/**
* @brief return the minute of a Date
* @return a integer indicate the minute of a date
*/
int getMinute(void) const;

/**
* @brief set the minute of a date
* @param a integer indicate the new minute of a date
*/
void setMinute(const int t_minute);

/**
* @brief check whether the date is valid or not
* @return the bool indicate valid or not
*/
static bool isValid(const Date &t_date);

/**
* @brief convert a string to date, if the format is not correct return
* 0000-00-00/00:00
* @return a date
*/
static Date stringToDate(const std::string &t_dateString);

/**
* @brief convert a date to string, if the date is invalid return
* 0000-00-00/00:00
*/
static std::string dateToString(const Date &t_date);

/**
* @brief overload the assign operator
*/
Date &operator=(const Date &t_date);

/**
* @brief check whether the CurrentDate is equal to the t_date
*/
bool operator==(const Date &t_date) const;

/**
* @brief check whether the CurrentDate is greater than the t_date
*/
bool operator>(const Date &t_date) const;

/**
* @brief check whether the CurrentDate is less than the t_date
*/
bool operator<(const Date &t_date) const;

/**
* @brief check whether the CurrentDate is greater or equal than the t_date
*/
bool operator>=(const Date &t_date) const;

/**
* @brief check whether the CurrentDate is less than or equal to the t_date
*/
bool operator<=(const Date &t_date) const;

private:
int m_year;
int m_month;
int m_day;
int m_hour;
int m_minute;
};

#endif

所以我得到了 3 个构造函数,1) 默认 2) 带参数 3) 带字符串。

在第三个中,我得到一个格式为(示例)的日期字符串:2018-10-25/14:00(即 yy-mm-dd/hh:mm)。所以我需要将这些值存储到我的私有(private)变量中(m_year、m_month、m_day、m_hour、m_minute)。有点像我需要以某种方式读取这种字符串格式,检测什么是什么并存储它,但是如何呢?

最佳答案

你可以尝试这样的事情:

#include <stdio.h>
#include <iostream>
#include <iomanip>

int main(int argc, char* argv[]) {

std::string date = "2018-05-07/09:00";
int t_year, t_month, t_day, t_hour, t_minute;

sscanf_s(date.c_str(), "%4d-%2d-%2d/%2d:%2d",
&t_year,
&t_month,
&t_day,
&t_hour,
&t_minute);

std::cout << t_year <<
"-" << std::setfill('0') << std::setw(2) << t_month <<
"-" << std::setfill('0') << std::setw(2) << t_day <<
"/" << std::setfill('0') << std::setw(2) << t_hour <<
":" << std::setfill('0') << std::setw(2) << t_minute << std::endl;
return 0;
}

输出:

2018-05-07/09:00

请注意,对于 sscanf_s,您需要使用 C 字符串。因此,您首先需要将date 转换为c_str()。如果您在 Linux 下运行该程序,请使用 sscanf 而不是 sscanf_s

关于c++ - C++中的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52993094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com