当前位置:首页 » 编程语言 » c语言日期转换

c语言日期转换

发布时间: 2022-06-11 15:59:55

c语言显示日期日历转换代码!!急急!!!!!!!

基本上就是这个思想,不太对,你再调试一下吧

#include <stdio.h>

#define YEAR 1970
typedef struct
{
int year;
int month;
int day;
int hour;
int min;
int sec;
} date;

/*储存12个月的天数*/
const int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};

/*判断是否为闰年*/
int isLeapYear(int year)
{
if(((year%4==0)&&(year%100!=0))
||(year%400==0))
{
return 1;
}
return 0;
}

/*日期转成1970年1月1日起的天数*/
long date2sec(date d)
{
long sum=0;
int i;

//累计以往各年的天数
for(i=YEAR;i<d.year;i++)
{
sum+=365;
if(isLeapYear(i))
{//闰年多一天
sum+=1;
}
}
//累计当年以往各月的天数
for(i=0;i<d.month;i++)
{
sum+=days[i];
}
if(d.month>2)
{
if(isLeapYear(i))
{//闰年多一天
sum+=1;
}
}
//累计当年当月的天数
sum+=d.day-1;
//转换成秒
sum=sum*24*60*60;

//加当天的小时,分钟,秒
sum+=d.hour*60*60+d.min*60+d.sec;
//返回总秒数
return sum;
}

/*日期转成1970年1月1日起的天数*/
date sec2date(long sec)
{
date d={YEAR,1,1,0,0,0};
int ds,sum;

ds=sec/(24*60*60);
sec-=ds*(24*60*60);
d.hour=sec/(60*60);
sec-=d.hour*(60*60);
d.min=sec/60;
sec-=d.min*60;
d.sec=sec;
//计算有多少年
while(1)
{
sum=365;
if(isLeapYear(d.year))
{//闰年多一天
sum+=1;
}
if(ds<sum)
{//不足一年了
break;
}
d.year++;
ds-=sum;
}

//计算有多少月
while(1)
{
sum=days[d.month-1];
if(d.month==2)
{
if(isLeapYear(d.year))
{//闰年多一天
sum+=1;
}
}
if(ds+1<sum)
{//不足一月了
d.day+=ds;
break;
}
d.month++;
ds-=sum;
}
return d;
}

main()
{
long sec;
date d;

puts("请输入日期(格式为2008-08-08 08:08:08):");
scanf("%d-%d-%d %d:%d:%d",&d.year,&d.month,&d.day,&d.hour,&d.min,&d.sec);
sec=date2sec(d);
printf("到格林时间%d秒!\n",sec);
puts("请到格林时间的秒数:");
scanf("%d",&sec);
d=sec2date(sec);
printf("日期为:%d-%d-%d %d:%d:%d\n",d.year,d.month,d.day,d.hour,d.min,d.sec);
}

② C语言求助:时间格式转换

#include
<stdio.h>
int
main()
{
int
h,m,s;
while(scanf("%d:%d:%d",&h,&m,&s))
{
if(h!=12)
{
h=h%12;
}
printf("PM:%02d:%02d:%02d\n",h,m,s);
}
}
未通过,是因为但h,m,s是个位数时,比如我输入12:00:00,输出的是AM:12:0:0,而不是AM:12:00:00,怎么办有什么办法?
对你这个问题
格式化输出就可以了...
看我的代码...
符合你的要求...

③ C语言中 怎样把日期转换成字符串

用代码讲解一下:
#include <stdio.h>
#include <time.h>
int main(void)
{
char buffer[128];
struct tm *datetime;
time_t current_time;
tzset();
time(¤t_time);
datetime = localtime(¤t_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

④ 用C语言编写一个时间换算

刚才给的那个代码太繁琐了,又重新调整了一下:
#include <stdio.h>
int main()
{
//世界协调时与北京时间换算
int a;
scanf("%d",&a); /*输入北京时间*/
if (a >= 800)
{
printf("%d\n",a-800); /*如果输入的北京时间大于800,直接减去800,就是世界协调时*/
}
else{

int b=a/100; /*换算百位数字*/
int c=a%100; /*换算十位和个位数字*/
printf("%d\n",(24-(8-b))*100+c);
}

return 0;
}

⑤ C语言时间,怎么把time_t类型的时间,转化成年、月、日、时、分、秒呢

可以使用gmtime函数或localtime函数将time_t类型的时间日期转换为struct tm类型(年、月、日、时、分、秒)。
使用time函数返回的是一个long值,该值对用户的意义不大,一般不能根据其值确定具体的年、月、日等数据。gmtime函数可以方便的对time_t类型数据进行转换,将其转换为tm结构的数据方便数据阅读。gmtime函数的原型如下:struct tm *gmtime(time_t *timep);localtime函数的原型如下:struct tm *localtime(time_t *timep);将参数timep所指的time_t类型信息转换成实际所使用的时间日期表示方法,将结果返回到结构tm结构类型的变量。gmtime函数用来存放实际日期时间的结构变量是静态分配的,每次调用gmtime函数都将重写该结构变量。如果希望保存结构变量中的内容,必须将其复制到tm结构的另一个变量中。gmtime函数与localtime函数的区别:gmtime函数返回的时间日期未经时区转换,是UTC时间(又称为世界时间,即格林尼治时间)。localtime函数返回当前时区的时间。
转换日期时间表示形式time_t类型转换为struct tm类型示例:
#include <stdio.h>
#include <time.h>
int main()
{
char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};/*指针字符数组*/ time_t t;
struct tm *p;
t=time(NULL);/*获取从1970年1月1日零时到现在的秒数,保存到变量t中*/ p=gmtime(&t); /*变量t的值转换为实际日期时间的表示格式*/
printf("%d年%02d月%02d日",(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);
printf(" %s ", wday[p->tm_wday]);
printf("%02d:%02d:%02d\n", p->tm_hour, p->tm_min, p->tm_sec);
return 0;
}
注意:p=gmtime(&t);此行若改为p=localtime(&t);则返回当前时区的时间。

⑥ c语言将日期转换为字符串 急求,谢谢!

#include"stdio.h"

int main()

{ int y,m,d,c,w;

char week[7][10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

scanf("%d%d%d",&y,&m,&d);

if(m<3){m+=12;y--;}

c=y/100;

y%=100;

w=(y+y/4+c/4-2*c+26*(m+1)/10+d-1)%7;

printf("%d%d/%d/%d %s ",c,y,m,d,week[w]);

return 0;

}

⑦ C语言实验--转换日期格式

#include<stdio.h>

intmain(void)
{
inty,m,d;
scanf("%d/%d/%d",&m,&d,&y);
printf("%d.%02d.%02d",y,m,d);
return0;
}

⑧ C语言转换日期的表示形式

这个可以吗?
#include
void
main()
{
char
num[8];//定义一个字符数组num
int
i;//定义整型变量
printf("请输入正确的日期!格式为:xxxxxxxx\n");
for(i=0;i<=8;i++)//循环语句,读入8个字符,依次放到数组num中,作为8个元素
num[i]=getchar();
for(i=0;i<4;i++)//输出前四个字符(年份)
putchar(num[i]);
putchar('_');
for(;i<6;i++)//输出(月份)
putchar(num[i]);
putchar('_');
for(;i<8;i++)//输出(日)
putchar(num[i]);
putchar('\n');//回车
}

⑨ c语言,如何进行日期格式转换

time.h 有函数 strftime 输出各种格式,但没有 你的 11th 13rd 格式。
简单办法是用查表法

#include "stdio.h"
#include "stdlib.h"
void main()
{
char dmy[20]="13/12/2010";
int i,j;
int a,b,c;
char d[32][5]={"0","1st","2nd","3rd","4th","5th","6th","7th","8th","9th","10th",
"11th","12th","13rd","14th","15th","16th","17th","18th",
"19th",.....,"31st"}; // 请自己补全
char m[13][4]={" ","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
j = strlen(dmy);
printf("j=%d\n",j);
for (i=0;i<j ;i++) if ( dmy[i] =='/') dmy[i]=' ';
sscanf(dmy,"%d %d %d",&a,&b,&c);
printf("%s %s %d",d[a],m[b],c); // 打印出你要的 13rd Dec 2010

}

⑩ c语言怎么将一个年月日转换成秒数

用mktime()函数。

表头文件:#include <time.h>

定义函数:time_tmktime(structtm*timeptr);

函数说明:mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0秒算起至今的UTC时间所经过的秒数。

返回值:返回经过的秒数。

(10)c语言日期转换扩展阅读:

C语言参考函数

C语言isgraph()函数:判断一个字符是否是图形字符

C语言isdigit()函数:判断一个字符是否为数字

C语言iscntrl()函数:判断一个字符是否为控制字符

C语言isalpha()函数:判断一个字符是否是字母

C语言isalnum()函数:判断一个字符是否是字母或者数字

C语言pow()函数:求x的y次方的值

C语言frexp()函数:提取浮点数的尾数和指数部分

热点内容
设计加密技术 发布:2024-06-18 04:23:50 浏览:359
安卓wetv哪里下 发布:2024-06-18 03:18:53 浏览:369
怎么把照片上传到云端 发布:2024-06-18 02:00:24 浏览:766
sqlupdate字符串 发布:2024-06-18 01:56:14 浏览:674
ftp怎么上传文件到手表 发布:2024-06-18 01:43:32 浏览:219
正则表达式匹配sql 发布:2024-06-18 01:21:06 浏览:878
梦幻西游手游脚本免费 发布:2024-06-18 00:42:05 浏览:191
linuxmysql56 发布:2024-06-18 00:16:00 浏览:617
大众suv配置如何 发布:2024-06-18 00:08:51 浏览:613
按键精灵循环按键脚本 发布:2024-06-17 23:58:57 浏览:718