【问题标题】:How to get current system time and cast in array?如何获取当前系统时间并转换为数组?
【发布时间】:2015-07-27 01:27:20
【问题描述】:

我想分别获取时间和日期以将其放入数组中。我希望调用函数类似于int date(int Day,int Month,int Year),但它不正确。如何定义函数的参数 Year Month Day 和 Hour min sec 以使用它们?

using namespace std;
int date() {
    time_t currentTime;
    struct tm *localTime;

    time(&currentTime);                  
    localTime = localtime(&currentTime);

     int Day = localTime->tm_mday;
     int Month = localTime->tm_mon + 1;
     int Year = localTime->tm_year + 1900;
    return (0);
}
int time() {
    time_t currentTime;
    struct tm *localTime;

    time(&currentTime);                   
    localTime = localtime(&currentTime); 

    int Hour = localTime->tm_hour;
    int Min = localTime->tm_min;
    int Sec = localTime->tm_sec;
    return (0);
}
int main() {
    unsigned int new_date=date();
    char write[4];
    memcpy(write,&new_date,4);

    unsigned int new_time=time();
       char wrt[4];
       memcpy(wrt,&new_time,4);



    }

【问题讨论】:

  • 你明白date()time()都返回0吗?
  • 是的,我想改变它,但我不知道怎么做??
  • 嗯,从目前的角度来看,这太宽泛了。首先,选择一种语言。 CC++ 并不完全一样。
  • 与您的问题无关,但如果您想像这样memcpy(),如果您希望它保持便携性,您应该使用sizeof(unsigned int) 而不是4

标签: c++ datetime argument-passing


【解决方案1】:

您必须声明函数以通过引用传递参数:

              // pass arguments by reference to change them in the function 
int date(int &Day, int &Month, int&Year) {
    time_t currentTime;
    struct tm *localTime;

    time(&currentTime);                  
    localTime = localtime(&currentTime);

     Day = localTime->tm_mday;   // use the reference argument
     Month = localTime->tm_mon + 1;
     Year = localTime->tm_year + 1900;

    return (0);
}

然后你可以在main()这样使用它:

int d,m,y; 
date(d,m,y); 
cout << d<<"/"<<m<<"/"<<y<<endl;

你当然可以对时间做同样的事情。

【讨论】:

  • 很高兴!我建议使用函数 void 而不是总是返回 0 :这将清楚地表明调用者不应期望返回值中的任何内容。