对于我正在进行家庭自动化的项目,我需要能够获得日期和时间以及设置它们,我需要这个来自动激活某些功能,目前在搜索网络后我有这些用于设置日期和时间
日期:
char date[9];
_strdate(date);
std::cout << date << std::endl;
时间:
time_t timer;
struct tm y2k;
double seconds;
y2k.tm_hour = 0; y2k.tm_min = 0; y2k.tm_sec = 0;
y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1;
time(&timer); /* get current time; same as: timer = time(NULL) */
seconds = difftime(timer,mktime(&y2k));
std::cout<<" seconds since January 1, 2000 in the current timezone" << seconds << std::endl;
我想知道的是有更好的方法来做这两件事,我该如何设定日期和时间?
答案 0 :(得分:1)
如果您希望您的日期/时间代码可移植,您可能需要考虑像Boost date/time库这样的库。
这也使您能够进行计算并处理时间间隔等,并且您可以专注于编写自己的代码而不是自定义日期时间方法和类库。
http://www.boost.org/doc/libs/1_55_0/doc/html/date_time/examples/general_usage_examples.html
有一些人为的例子答案 1 :(得分:0)
声明一个类,而不是声明一个结构。这样,您可以在其中声明所有数据点,并使用getter和setter函数来修改和打印它们。写得像这样:
class y2k
{
// Private variables
int tm_hour;
int tm_year;
int tm_min;
int tm_mon;
int tm_sec;
int tm_mday;
public:
// Getters
int getHour() {return tm_hour;}
int getYear() {return tm_year;}
int getMin() {return tm_min;}
int getMon() {return tm_mon;}
int getSec() {return tm_sec;}
int getMDay() {return tm_mday;}
// Setters
void setHour(int hour) {hour = tm_hour;}
void setYear(int year) {year = tm_year;}
void setMin(int min) {min = tm_min;}
void setMon(int mon) {mon = tm_mon;}
void setSec(int sec) {sec = tm_sec;}
void setMDay(int mday) {mday = tm_mday;}
};
如果选择将值打印到屏幕,则使用getter;如果要设置数据,则使用setter。例如,如果您声明y2k foo
,则可以设置年份:foo.setYear(100)
。