校验日期有效性,除了在代码中内置日历数据,还可以利用以下方法进行判断,而且代码更简洁。经过测试,在本地虚拟机执行100W次循环判断,只需要4秒,执行效率杠杠的。
struct tm ltm = {0};
char buf[] = "2011-02-31";
puts(buf);
strptime(buf, "%Y-%m-%d", <m);
mktime(<m);
strftime(buf, sizeof(buf), "%Y-%m-%d", <m);
puts(buf);
输入和输出的内容如下:
2011-02-31
2011-03-03
通过字符串比较,如果不一致则表示不是有效日期。
我是咕咕鸡,一个还在不停学习的全栈工程师。
热爱生活,喜欢跑步,家庭是我不断向前进步的动力。