bax*_*rma 3 c date strftime localtime
我想把昨天的日期变成一个格式的字符:YYYYMMDD(没有斜点等).
我使用此代码来获取今天的日期:
time_t now;
struct tm *ts;
char yearchar[80];
now = time(NULL);
ts = localtime(&now);
strftime(yearchar, sizeof(yearchar), "%Y%m%d", ts);
Run Code Online (Sandbox Code Playgroud)
我将如何调整此代码,以便生成昨天的日期而不是今天的日期?
非常感谢.
该mktime()函数将规范化struct tm您传递的函数- 所以您需要做的就是:
now = time(NULL);
ts = localtime(&now);
ts->tm_mday--;
mktime(ts); /* Normalise ts */
strftime(yearchar, sizeof(yearchar), "%Y%m%d", ts);
Run Code Online (Sandbox Code Playgroud)
如何添加
now = now - (60 * 60 * 24)
Run Code Online (Sandbox Code Playgroud)
在一些非常罕见的极端情况下(例如在闰秒期间)可能会失败但是应该在99.999999%的时间内做你想要的.