用C语言输入年月日,输出距今天还有多少天,星期几,是不是是公历节日

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言输入年月日,输出距今天还有多少天,星期几,是不是是公历节日相关的知识,希望对你有一定的参考价值。

试试这个吧,GetNextTime函数

/*-----------------------------------------------------------------*\
author: wanfustudio
mail : wanfu.liu@163.com
Rights: 任意拷贝,修改,传播包括商业使用
Q & A :
如何疑问,以及想法,不满足的需求
欢迎来函!!!
\*-----------------------------------------------------------------*/

#include <stdio.h>
#include <string.h>
#include <time.h>
#include <math.h>

/*这段是注释,放在此处用以说明各个成员的含义,在time.h中定义*/
#if 0
struct tm
int tm_sec; /* seconds after the minute - [0,59] */
int tm_min; /* minutes after the hour - [0,59] */
int tm_hour; /* hours since midnight - [0,23] */
int tm_mday; /* day of the month - [1,31] */
int tm_mon; /* months since January - [0,11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday - [0,6] */
int tm_yday; /* days since January 1 - [0,365] */
int tm_isdst; /* daylight savings time flag */
;
#endif

/*-----------------------------------------------------------------*\
全局变量
\*-----------------------------------------------------------------*/

/* 数组与下面tm结构中定义的tm_wday取值范围相对应 */
const char *Week[]=

"星期天",
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六"
;

/*-----------------------------------------------------------------*\
函数声明
\*-----------------------------------------------------------------*/

/* 一年中第X天是星期几 */
void GetWeekDay(int year,int num);

/* X年X月X日是一年中的第X天,星期几 */
void GetSomeDay(int year, int mon, int day);

/* X年X月X日再过X天是一年中的第X天,星期几 */
void GetNextTime(int year, int mon, int day,int num);

/* X年某月末日到X年X月某日有多少天 */
int GetDistBetweenTwoDays(int year, int mon, int day, int year2, int mon2, int day2);

/*-----------------------------------------------------------------*\
函数实现
\*-----------------------------------------------------------------*/

void GetSomeDay(int year, int mon, int day)

time_t t;//存储需要计算时间距1900的秒数
struct tm test ;//填充这个结构
struct tm *now = NULL;

memset(&test, 0, sizeof(tm));//先清空下

test.tm_year = year - 1900;
test.tm_mon = mon -1;
test.tm_mday = day ;

t = mktime(&test);// 转换成秒
now = localtime(&t);//再转回tm

printf("%d\n", now->tm_yday);//第几天
printf("%s\n", Week[now->tm_wday]);//星期几


void GetNextTime(int year, int mon, int day,int num)

struct tm *pNext= NULL;
struct tm now, tmp;
time_t t;

memset(&now, 0 , sizeof(struct tm));
memset(&tmp, 0 , sizeof(struct tm));

now.tm_year = year-1900; //指定年
now.tm_mon = mon -1;//指定月份
now.tm_mday = day + num; //指定是哪一天

t = mktime(&now);//转换成秒

pNext = localtime(&t);

printf("%s\n", asctime(pNext));//哪一天
printf("%s\n", Week[pNext->tm_wday]);//星期几



void GetWeekDay(int year,int num)

time_t t;//存储需要计算时间距1900的秒数
struct tm test ;//填充这个结构
struct tm *now = NULL;

memset(&test, 0, sizeof(tm));//先清空下

test.tm_year = year - 1900;
test.tm_mday = num +1;

t = mktime(&test);// 转换成秒
now = localtime(&t);//再转回tm

printf("%d\n", now->tm_yday);//第几天
printf("%s\n", Week[now->tm_wday]);//星期几


int GetDistBetweenTwoDays(int year, int mon, int day, int year2, int mon2, int day2)

int distance = 0;
struct tm now, tmp;
time_t t1,t2;
long diff = 0;

memset(&now, 0 , sizeof(struct tm));
memset(&tmp, 0 , sizeof(struct tm));

now.tm_year = year-1900; //指定年
now.tm_mon = mon -1;//指定月份
now.tm_mday = day; //指定是哪一天

tmp.tm_year = year2-1900;
tmp.tm_mon = mon2 -1;
tmp.tm_mday = day2;

t1 = mktime(&now);// 转换成秒
t2 = mktime(&tmp);

diff = (long)fabs(difftime(t1, t2)); /* 算绝对值(秒) */

distance = diff / 3600 / 24; /* 转成天 */

printf("相隔 %d 天\n", distance);

return distance;


/*-----------------------------------------------------------------*\
函数测试
\*-----------------------------------------------------------------*/

int main()

GetWeekDay(2007,337);
GetSomeDay(2007,12,4);
GetNextTime(2005,12,4,100);
GetDistBetweenTwoDays(2011, 4, 30, 2011, 5, 2);

return 0;


/*-----------------------------------------------------------------*\
author: wanfustudio
mail : wanfu.liu@163.com
如何疑问,以及想法,不满足你的需求
欢迎来函!!!
\*-----------------------------------------------------------------*/追问

功能要求:
1) 输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。
2) 输入年月,输出该月的日历。
3) 输入年月日,输出距今天还有多少天,星期几,是否是公历节日。
用C语言编写 您打了那么多 真的谢谢您了 我的问题是这个样子的 我想要您的源代码 我弄了好久都没有弄出来 哎 希望得到您的源代码

追答

上面的就是源代码啊, 输出距今天还有多少天,星期几,是否是公历节日,这个改改就实现了
,其他的要自己写哦,我最近回家没时间搞这个东西

参考技术A 公元元年 1月1日是星期一 把输入的年月日一减就OK 遇到闰年做特殊处理一下就行了。追问

有源代码就好了!!!

追答

N年前写过 不过早就没有了 你自己写一下就行 就是正常减法 就是到闰年判断一下就OK 还是比较容易的。

参考技术B 23

Python时间转换函数:时间转化为时间戳时间戳转化为时间当前日期当前时间星期几前面或者后面多少天年月日等

Python时间转换函数:时间转化为时间戳、时间戳转化为时间、当前日期、当前时间、星期几、前面或者后面多少天、年、月、日等

#Python时间转换函数:时间转化为时间戳、时间戳转化为时间、当前日期、当前时间、星期几、前面或者后面多少天、年、月、日等

使用的核心python API:

tiem

datetime

import time
import datetime


# \'\'\'时间转化为时间戳: 2016-11-16 10:53:12 to 1479264792 \'\'\'
def TimeToTimeSpan(timeInfo):
    timeArray = time.strptime(timeInfo, "%Y-%m-%d %H:%M:%S")
    timeSpan = int(time.mktime(timeArray))
    return timeSpan


# \'\'\'把时间戳转化为时间: 1479264792 to 2016-11-16 10:53:12\'\'\'
def TimeStampToTime(timestamp):
    timeStruct = time.localtime(timestamp)
    return time.strftime(\'%Y-%m-%d %H:%M:%S\', timeStruct)


# \'\'\'把时间戳转化为时间: 1479264792 to 2016-11-16 10:53:12\'\'\'
def TimeStampToTime1(timestamp):
    temp =

以上是关于用C语言输入年月日,输出距今天还有多少天,星期几,是不是是公历节日的主要内容,如果未能解决你的问题,请参考以下文章

php输出星期几

以及距他下一次生日的天数。是C语言,不是C++

C语言的问题:根据输入的年月日,输出该日为该年度的第几周、第几天、星期几。

C语言输入年月日,判断第几天的问题最后计算是第几天出错了

求C语言编程万年历 答案合适者200分必送。

C语言,求年月日