String判断是不是年月日方式C++
时间: 2023-11-08 11:57:40 浏览: 168
判断输入的字符串是否是日期格式的简单方法
5星 · 资源好评率100%
以下是一个示例程序,用于判断输入的字符串是否符合年月日的格式:
```c
#include <stdio.h>
#include <string.h>
int is_valid_date(char *date);
int main() {
char date[11];
printf("请输入日期(格式为yyyy-mm-dd):");
scanf("%s", date);
if (is_valid_date(date)) {
printf("日期格式正确!\n");
} else {
printf("日期格式错误!\n");
}
return 0;
}
int is_valid_date(char *date) {
if (strlen(date) != 10) { // 日期长度必须为10
return 0;
}
if (date[4] != '-' || date[7] != '-') { // 年月日之间必须用“-”隔开
return 0;
}
int year = atoi(date);
int month = atoi(date + 5);
int day = atoi(date + 8);
if (year < 1 || year > 9999 || month < 1 || month > 12 || day < 1 || day > 31) { // 年份必须在1~9999之间,月份必须在1~12之间,日数必须在1~31之间
return 0;
}
if ((month == 4 || month == 6 || month == 9 || month == 11) && day > 30) { // 4、6、9、11月份只有30天
return 0;
}
if (month == 2) { // 2月份特判
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { // 闰年
if (day > 29) {
return 0;
}
} else { // 平年
if (day > 28) {
return 0;
}
}
}
return 1;
}
```
该程序首先读入一个字符串,然后调用`is_valid_date()`函数判断该字符串是否符合年月日的格式。`is_valid_date()`函数首先判断字符串长度是否为10,然后判断年月日之间是否用“-”隔开。接着将年、月、日分别转换成整数,并判断它们是否在合法范围内。最后,根据月份和年份判断日数是否合法。如果全部条件都符合,则返回1表示字符串符合年月日的格式,否则返回0表示字符串不符合。
阅读全文