基本上我想做的是允许用户设置每周或每月事件,并根据用户输入创建和安排更多tm值。例如,假设您要安排从今天下午4:00开始的每周一次的健身课程。您想将这两个持续三周。安排如下:
健身房一周1 2019/4/12 4:00
健身房周2 4/19/2019 4:00 PM
健身房周3 4/26/2019 4:00 PM
或者,如果您每月进行一次,则可能是这样的:
健身房月1 4/12/2019 4:00 PM
健身房月2 5/12/2019 4:00 PM
健身房月3 6/12/2019 4:00 PM
按现状,我目前可以执行此操作。但是,我遇到的问题是用户设置的日期超过当前限制。例如,假设您要安排四个星期,它应该像这样:
健身房一周1 2019/4/12 4:00
健身房周2 4/19/2019 4:00 PM
健身房周3 4/26/2019 4:00 PM
健身周4 2019/5/3 4:00 PM
相反,当我尝试越过4/30/2019时,会出现此错误
map.addLayer({
"id": "places",
"type": "circle",
"paint":{
"circle-color": "#E00819",
"circle-radius": 6
},
"source": {
"type": "geojson",
"data": {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"properties": {
"description": "<p id='texto1'><strong>País:</strong> Colombia<br><strong>Ciudad:</strong> Bogotá<br><strong>Representante:</strong> Diana Carolina Rey<br><strong>Contacto:</strong> Tel: [int. +57 1] 320 1511<br><strong>Email:</strong> contactenos@fundalectura.org.co<br><strong>Web:</strong> <a href=\"http://fundalectura.org/\" target=\"_blank\" title=\"Opens in a new window\">www.fundalectura.org</a></p>"
},
"geometry": {
"type": "Point",
"coordinates": [-74.08083, 4.59889 ]
}
}
我猜这意味着它不是将日期设置为5/3,而是将其设置为4/33,这是无效的。
这就是我要添加日期的方式:
每周:
__crt_time_is_day_valid(tm_value->tm_year, tm_value->tm_mon, tm_value->tm_mday)
每月:
for (int i = 0; i < NumDates; i++) {
tempevent = event;
temptime = settime;
tempevent += " Week ";
tempevent += to_string(i + 1);
temptime.tm_mday += (7 * i);
addDate(tempevent, temptime);
}
是否可以将当前月/年溢出的日期添加到下一个日期,而不是添加无效的日期?
答案 0 :(得分:0)
好的,实际上我自己找到了解决方案。我不确定这是否是最好的解决方案,但是可以。
time_t newtime;
std::time_t tt = system_clock::to_time_t(system_clock::now());
tm curtime = *localtime(&tt);
for (int i = 0; i < NumDates; i++) {
tempevent = event;
temptime = settime;
temptime.tm_isdst = curtime.tm_isdst;
tempevent += " Week ";
tempevent += to_string(i + 1);
temptime.tm_mday += (7 * i);
time_t newtemp = mktime(&temptime);
temptime = *localtime(&newtemp);
addDate(tempevent, temptime);
}
也许有点令人费解,但是基本上将tm更改为time_t可以解决此问题。之后,我将其更改回tm值。但是,mktime存在一个问题,该问题通常是使小时减少1。据我所知,这是由于mktime猜测是否是夏令时。因此,我将夏令时设置为当前夏令时。
我唯一担心的是,如果用户在夏令时之后安排一些时间,可能会出现问题...我希望不是这种情况,但是现在这可以解决当前的问题。