time_t orderTime = mktime(&tm{ 0,0,0,orderDay,orderMonth - 1,orderYear - 1900 });这段代码tm报错表达式必须为左值或函数指示符
时间: 2024-02-13 11:00:23 浏览: 111
嗯,这段代码的作用是将一个tm结构体表示的日期时间转换为一个time_t类型的时间戳。其中,tm结构体包含了年、月、日、时、分、秒等时间信息,而time_t类型的时间戳表示的是从1970年1月1日00:00:00至当前时间的秒数。
至于编译错误的问题,可能是因为你的编译器不支持使用花括号初始化结构体的方式。你可以试着将这段代码修改为如下形式:
```c++
struct tm orderTime = { 0 };
orderTime.tm_year = orderYear - 1900;
orderTime.tm_mon = orderMonth - 1;
orderTime.tm_mday = orderDay;
orderTime.tm_hour = 0;
orderTime.tm_min = 0;
orderTime.tm_sec = 0;
time_t orderTimestamp = mktime(&orderTime);
```
这样应该就能够正确编译了。
相关问题
time_t orderTime = mktime(&tm{ 0,0,0,orderDay,orderMonth - 1,orderYear - 1900 }); time_t currentTime = mktime(&tm{ 0,0,0,day,month - 1,year - 1900 });应该怎么改,&tm显示要求左值
你可以先创建一个tm结构体的实例对象,然后再使用取地址运算符来获取这个实例对象的地址,例如:
```c++
struct tm orderTime = { 0 };
orderTime.tm_year = orderYear - 1900;
orderTime.tm_mon = orderMonth - 1;
orderTime.tm_mday = orderDay;
orderTime.tm_hour = 0;
orderTime.tm_min = 0;
orderTime.tm_sec = 0;
time_t orderTimestamp = mktime(&orderTime);
struct tm currentTime = { 0 };
currentTime.tm_year = year - 1900;
currentTime.tm_mon = month - 1;
currentTime.tm_mday = day;
currentTime.tm_hour = 0;
currentTime.tm_min = 0;
currentTime.tm_sec = 0;
time_t currentTimestamp = mktime(¤tTime);
```
这样就可以正确地创建tm结构体的实例对象,并使用取地址运算符来获取其地址了。
time_t curtime;//current time curtime = time(NULL); ocurtime = mktime(&tm_);
这段代码主要是获取当前时间并将其转换为time_t类型,并将一个tm结构体转换为time_t类型。其中,time函数返回的是当前时间的秒数,而mktime函数则将tm结构体表示的时间转换为time_t类型的时间。
具体解释见下:
1. `time_t curtime;` 声明一个time_t类型的变量curtime,用于存储当前时间。
2. `curtime = time(NULL);` 获取当前时间,time(NULL)函数返回的是当前时间的秒数,赋值给curtime变量。
3. `ocurtime = mktime(&tm_);` 将一个tm结构体表示的时间转换为time_t类型的时间,赋值给ocurtime变量。这里的tm_是一个tm结构体的变量,表示了一个具体的时间,mktime函数将其转换为time_t类型的时间。
- mktime函数的参数是一个指向tm结构体的指针,因此需要使用&符号获取tm_的地址传递给mktime函数。
总的来说,这段代码的作用是获取当前时间和将一个具体的时间转换为time_t类型的时间。
阅读全文