‘壹’ 用c语言怎么将公历日期转化为农历日期
其实很简单,你的程序中定义一些数组,保存一些重要参数即可,下面是JAVASCRIPT的,看懂了你就可以用C来写:
var lunarInfo=new Array(
0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0)
//====================================== 传回农历 y年的总天数
function lYearDays(y) {
var i, sum = 348
for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0
return(sum+leapDays(y))
}
//====================================== 传回农历 y年闰月的天数
function leapDays(y) {
if(leapMonth(y)) return((lunarInfo[y-1900] & 0x10000)? 30: 29)
else return(0)
}
//====================================== 传回农历 y年闰哪个月 1-12 , 没闰传回 0
function leapMonth(y) {
return(lunarInfo[y-1900] & 0xf)
}
//====================================== 传回农历 y年m月的总天数
function monthDays(y,m) {
return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 )
}
‘贰’ C语言:日期换算
#include<stdio.h>
intisLeap(inty)
{
if(y%4==0&&y%100!=0||y%400==0)
return1;
else
return0;
}
intgetDays(inty,intm,intd)
{
inti,days=0;
intDaysPerMonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
DaysPerMonth[1]=isLeap(y)?29:28;
for(i=0;i<m-1;i++)
{
days+=DaysPerMonth[i];
}
days+=d;
returndays;
}
voidgetDate(inty,intdays,int*pm,int*pd)
{
intm,d,i,temp=0;
intDaysPerMonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
DaysPerMonth[1]=isLeap(y)?29:28;
for(i=0;i<12;i++)
{
if(temp<days&&i<12&&temp+DaysPerMonth[i]>=days)
break;
temp+=DaysPerMonth[i];
}
m=i+1;
d=days-temp;
*pm=m;
*pd=d;
}
intmain()
{
inty,m,d,days;
y=2000;
days=getDays(y,12,31);
printf("%d ",days);
getDate(y,days,&m,&d);
printf("%d年的第%d天是%d月%d号 ",y,days,m,d);
return0;
}
‘叁’ 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语言日期格式转换
1、c里没有相应的库,只能用asctime函数转换成一种固定格式。如果要转换,可以用sprintf把各种数据以“
1980-01-02
02:03:55
”
这种标准格式,格式到一个字符串中。
2、asctime函数:
原型:char*
asctime
(const
struct
tm
*
timeptr);
功能:把timeptr指向的tm结构体中储存的时间转换为字符串;
头文件:time.h;
返回值:一个固定格式的字符串。字符串格式为:www
mmm
dd
hh:mm:ss
yyyy。其中www为星期,mmm为月份,dd为日,hh为时,mm为分,ss为秒,yyyy为年份。
3、例程:
#include
#include
int main(){
time_t rawtime;
struct tm * timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);//使用localtime函数把秒数时间rawtime转换为本地时间以tm结构体保存,并把tm结构体地址储存到timeinfo当中
printf("当前日期为: %s",asctime(timeinfo));//使用asctime函数把tm结构体中储存的时间转换为字符串,并输出
return 0;
}
‘伍’ 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语言如何将日期2018-08-21转化为18年8月
日期转换:输入某年某月某日,计算并输出它是这一年的第几天。
/* 函数功能:对给定的某年某月某日,计算它是这一年的第几天。
函数参数:整型变量year、month、day,分别代表年、月、日
函数返回值:这一年的第几天*/int DayofYear(int year, int month, int day)。
‘柒’ 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 <stdio.h>
#include <string.h>
int main()
{int month,b,c;
scanf("%d/%d/%d",&month,&b,&c);
switch(month)
{
case 1:printf("Jan,%d,%d\n",b,c);
break;
case 2:printf("Feb,%d,%d\n",b,c);
break;
case 3:printf("Mar,%d,%d\n",b,c);
break;
case 4:printf("Apr,%d,%d\n",b,c);
break;
case 5:printf("May,%d,%d\n",b,c);
break;
case 6:printf("Jun,%d,%d\n",b,c);
break;
case 7:printf("Jul,%d,%d\n",b,c);
break;
case 8:printf("Aug,%d,%d\n",b,c);
break;
case 9:printf("Sep,%d,%d\n",b,c);
break;
case 10:printf("Oct,%d,%d\n",b,c);
break;
case 11:printf("Nov,%d,%d\n",b,c);
break;
case 12:printf("Dec,%d,%d\n",b,c);
break;
default:printf("Data Error\n");
}
return 0;
}
‘玖’ C语言日期格式转换
C里没有相应的库
但你可以用sprintf把各种数据以“ 1980-01-02 02:03:55 ” 这种标准格式,格式到一个字符串中就可以了
‘拾’ 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');//回车
}