c语言日期转换
① 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()函数:提取浮点数的尾数和指数部分