【发布时间】:2014-05-20 10:39:32
【问题描述】:
有没有一种简单的方法可以计算比当前提前 90 天?例如,如果今天是 5 月 31 日,那么 90 天前的日期是什么?有这样做的功能吗?谢谢
【问题讨论】:
-
首先你需要决定如何表示日期。您提到了 ANSI C 和 MFC 的某种邪恶的混合。会是哪个?据我所知,MFC是一个C++库,MS编译器甚至不支持ANSI C。
有没有一种简单的方法可以计算比当前提前 90 天?例如,如果今天是 5 月 31 日,那么 90 天前的日期是什么?有这样做的功能吗?谢谢
【问题讨论】:
#include <stdio.h>
#include <string.h>
#include <time.h>
int main(void) {
time_t t = time(0); // NOW
struct tm tm[1];
memmove(tm, localtime(&t), sizeof tm); // convert to struct tm
tm->tm_mday -= 90; // subtract 90 days
time_t then2 = mktime(tm); // convert to time_t and normalize
printf("%s\n", ctime(&then2));
return 0;
}
【讨论】:
tm_isdst 字段的非调整可以解决这个问题,
不是一个单一的功能,不。
但是你可以很容易地做到这一点:
time()获取当前时间。localtime() 转换为当地时间。strftime() 转换为字符串。【讨论】:
DateTime dt = DateTime.Now.AddDays(-90);
string edate = dt.ToString("dd-MM-yyyy");
【讨论】: