#include
void
main()
{
char
int
i//定义整型变量
printf("请输入正确的日期!格式为:xxxxxxxx\n")
for(i=0i<=8i++)//循环语句,读入8个字符,依次放到数组num中,作为8个元素
num[i]=getchar()
for(i=0i<4i++)//输出前四个字符(年份)
putchar(num[i])
putchar('_')
for(i<6i++)//输出(月份)
putchar(num[i])
putchar('_')
for(i<8i++)//输出(日)
putchar(num[i])
putchar('\n')//回车
}
#include<stdio.h>int isLeap(int y)
{
if(y%4==0&&y%100!=0||y%400==0)
return 1
else
return 0
}
int getDays(int y,int m,int d)
{
int i,days=0
int DaysPerMonth[]={31,28,31,30,31,30,31,31,30,31,30,31}
DaysPerMonth[1]=isLeap(y)?29:28
for(i=0i<m-1i++)
{
days+=DaysPerMonth[i]
}
days+=d
return days
}
void getDate(int y,int days,int*pm,int *pd)
{
int m,d,i,temp=0
int DaysPerMonth[]={31,28,31,30,31,30,31,31,30,31,30,31}
DaysPerMonth[1]=isLeap(y)?29:28
for(i=0i<12i++)
{
if(temp<days&&i<12&&temp+DaysPerMonth[i]>=days)
break
temp+=DaysPerMonth[i]
}
m=i+1
d=days-temp
*pm=m
*pd=d
}
int main()
{
int y,m,d,days
y=2000
days=getDays(y,12,31)
printf("%d\n",days)
getDate(y,days,&m,&d)
printf("%d年的第%d天是%d月%d号\n",y,days,m,d)
return 0
}
用代码讲解一下:#include <stdio.h>
#include <time.h>
int main(void)
{
char buffer[128]
struct tm *datetime
time_t current_time
tzset()
time(&current_time)
datetime = localtime(&current_time)
strftime(buffer, sizeof(buffer), "%x %X", datetime)
printf("Using %%x %%X: %s\n", buffer)
strftime(buffer, sizeof(buffer), "%A %B %m, %Y", datetime)
printf("Using %%A %%B %%m %%Y: %s\n", buffer)
strftime(buffer, sizeof(buffer), "%I:%M%p", datetime)
printf("Using %%I:%%M%%p: %s\n", buffer)
return 1
}
输出结果:
Using %x %X: 09/09/12 18:10:33
Using %A %B %m %Y: Sunday September 09, 2012
Using %I:%M%p: 06:10PM