基于时间日历控件的获取选择时间比较的测试程序 VC
C语言中的日期和时间处理
C语言中的日期和时间处理在计算机编程中,日期和时间处理是非常常见且重要的任务之一。
C语言作为一种高级编程语言,提供了一些内置函数和库来处理日期和时间。
本文将介绍在C语言中如何对日期和时间进行处理。
1. 时间表示和存储在C语言中,时间通常使用特定的数据类型来表示和存储。
其中,最常用的类型是time_t。
time_t是一个整数类型,用于存储从1970年1月1日开始的秒数。
通常,我们可以使用time函数获得当前时间的秒数,例如:```ctime_t currentTime = time(NULL);```此时,变量currentTime将保存当前时间的秒数。
2. 时间的格式化输出在实际应用中,我们通常需要将时间以不同的格式输出,例如将时间转换为字符串。
C语言提供了strftime函数来实现这一功能。
strftime 函数接受一个时间结构体指针和一个格式化字符串,将时间按照指定的格式输出为字符串。
例如:```ctime_t currentTime = time(NULL);struct tm *timeInfo = localtime(¤tTime);char timeString[80];strftime(timeString, sizeof(timeString), "%Y-%m-%d %H:%M:%S", timeInfo);printf("当前时间:%s\n", timeString);```上述代码将当前时间按照"%Y-%m-%d %H:%M:%S"的格式输出,结果类似于"2022-01-01 12:00:00"。
3. 时间的加减运算在实际开发中,我们可能需要对时间进行加减运算,例如计算两个日期之间的时间差。
C语言提供了一些函数和库来实现这些运算。
其中,difftime函数可以计算两个时间之间的秒数差:```ctime_t time1, time2;// 假设已经初始化time1和time2为不同的时间double diff = difftime(time1, time2);```上述代码将计算time1和time2之间的秒数差,并将结果保存在diff 变量中。
万年历的c语言实现源程序
万年历的C语言编程实现源程序:#include<stdio.h>#include<stdlib.h>int Isleapyear(int y)/*判断是否是闰年*/{if((y%4==0&&y%100!=0)||(y%400==0))return 1;elsereturn 0;}int Getdaysofmonth(int y,int m)/*确定某个月的天数*/{int months[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};if(Isleapyear(y))/*如果是闰年则2月份的天数改变为29*/ months[2]=29;return months[m];}int Gettotaldays(int y,int m)/*计算从1901年1月开始到给定年月的天数*/{intmonths[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int days=0;int i,j;if((Isleapyear(y)))months[2]=29;for(i=1901;i<y;i++)/*从1901年1月开始计算,累加y年之前的天数*/{if(Isleapyear(i))days+=366;elsedays+=365;}for(j=1;j<m;j++)/*累加m月之后的天数*/days+=months[j];return days;}int Getfirstdayintable(int y,int m)/*计算给定年月的第一天在日历表中的位置*/{int d;d=Gettotaldays(y,m);d=d+3;/*1901年1月1日是星期二,在日历中星期二是第三个位置*/d=d%7;return d;}void Showdate(int y,int m)/*显示日历*/{int first;int d;int i,k;first=Getfirstdayintable(y,m);/*得到第一天在日历中的第一个位置*/d=Getdaysofmonth(y,m);/*得到这个月的天数*/k=0;printf("-------------------------------------\n");printf(" SUN MON TUE WEN THU FRI STA\n");for(i=1;i<first;i++)/*打印第一天之前的空格*/{printf(" ");k++;/*k用于确定日历中是否回车*/}for(i=1;i<=d;i++){printf("%5d",i);/*每个具体的日期占5个字符的宽度*/k++;if(k==7)/*每行打印7个日期数字后回车*/{printf("\n");k=0;}}printf("\n-------------------------------------\n"); }int main(){int y,m;printf("Input year:");scanf("%d",&y);printf("Input month:");scanf("%d",&m);Showdate(y,m);return 0;}欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习资料等等打造全网一站式需求。
如何用vc 获取系统时间和程序运行时间
如何用vc++获取系统时间和程序运行时间.txt喜欢我这是革命需要,知道不?!你不会叠衣服一边呆着去!以后我来叠!我一定要给你幸福,谁也别想拦着。
标题:如何用vc++获取系统时间和程序运行时间出处:春天的事业时间:Mon, 22 Jun 2009 17:34:26 +0000作者:xiechunye地址:/read.php/612.htm内容:Q:如何获取时间?精度如何?A:1 使用time_t time( time_t * timer ) 精确到秒计算时间差使用double difftime( time_t timer1, time_t timer0 )2 使用clock_t clock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒3 使用DWORD GetTickCount() 得到的是系统运行的时间精确到毫秒4 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒5 要获取高精度时间,可以使用BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)获取系统的计数器的频率BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)获取计数器的值然后用两次计数器的差除以Frequency就得到时间。
6 还有David的文章中提到的方法:Multimedia Timer FunctionsThe following functions are used with multimedia timers.timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTimetimeGetTime/timeKillEvent/TimeProc/timeSetEvent 精度很高Q:GetTickCount()函数,说是毫秒记数,是真的吗,还是精确到55毫秒?A:GetTickCount()和GetCurrentTime()都只精确到55ms(1个tick就是55ms)。
可调时间万年历C程序
case 8: day1=32;
break;
case 9: day1=31;
break;
case 10: day1=32;
break;
case 11: day1=31;
break;
case 12: day1=32;
P1=0xff;
wela=1; //消除余晖
wela=0;
P1=tabledu1[d];
dula=1;
dula=0;
temp=temp+1;
P1=temp;
wela=1;
wela=0;
delay(1);
P1=0xff;
P1=temp;
wela=1;
wela=0;
delay(1);
P1=0xff;
wela=1; //消除余晖
wela=0;
P1=tabledu[j];
dula1=1;
dula1=0;
temp=temp+1;
P1=temp;
wela=1;
#include<reg52.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit P2_0=P2^0;
sbit dula1=P2^4;
sbit wela1=P2^5;
sbit dula=P2^6;
0x39,0x5e,0x79,0x71};
uchar code tabledu1[]={
0xbf,0x86,0xdb,0xcf,
万年历c语言代码讲解
万年历c语言代码讲解摘要:一、万年历C语言代码讲解简介1.万年历的概念及用途2.C语言代码讲解的重要性二、C语言代码基础1.C语言简介2.C语言基本语法3.C语言的数据类型与变量三、万年历C语言代码实现1.计算闰年2.计算月份的天数3.计算日期的星期4.输出万年历四、万年历C语言代码的优化与拓展1.代码性能优化2.功能的拓展与实现五、总结1.万年历C语言代码讲解的意义2.对编程能力的提升正文:一、万年历C语言代码讲解简介万年历是一种记录了公历日期的工具,它可以帮助我们快速查询公历日期对应的农历、节日、提醒等信息。
C语言是一种广泛应用于计算机领域的编程语言,掌握C语言编程对于学习其他编程语言有很大的帮助。
本文将详细讲解万年历C语言代码的实现过程,帮助读者更好地理解C语言编程。
二、C语言代码基础1.C语言简介C语言是一种高级编程语言,由丹尼斯·里奇(Dennis Ritchie)于20世纪70年代在贝尔实验室开发。
C语言具有良好的性能和可移植性,被广泛应用于操作系统、嵌入式系统、硬件驱动等领域。
2.C语言基本语法C语言的基本语法包括变量声明、数据类型、运算符、控制结构、函数等。
了解这些基本语法对于编写C语言代码至关重要。
3.C语言的数据类型与变量C语言的数据类型包括整型、浮点型、字符型等。
变量是存储数据的容器,通过变量名来表示。
声明变量时需要指定变量的数据类型和存储空间。
三、万年历C语言代码实现1.计算闰年闰年是指公历年份可以被4整除但不能被100整除的年份,或者是可以被400整除的年份。
通过编写一个函数,我们可以判断一个年份是否为闰年。
2.计算月份的天数根据公历规定,每个月的天数不同。
通过编写一个函数,我们可以计算指定月份的天数。
3.计算日期的星期通过编写一个函数,我们可以根据公历日期计算对应的星期。
4.输出万年历根据用户输入的日期范围,输出对应的万年历信息。
四、万年历C语言代码的优化与拓展1.代码性能优化在实现万年历C语言代码的过程中,可以通过优化算法、使用更高效的函数等方式提高代码性能。
C语言万年历设计报告
千里之行,始于足下。
C语言万年历设计报告以下是一个关于C语言万年历设计报告的例子,共计约:设计报告:C语言万年历1. 引言万年历是一种用来显示特定年份日历的工具。
本设计报告将介绍一个使用C语言编写的万年历程序,它可以接受用户输入的年份,并显示该年份的日历。
2. 设计目标本程序的主要设计目标是实现以下功能:- 接受用户输入的年份。
- 检查年份的有效性。
- 显示该年份的万年历。
3. 设计思路万年历程序的设计思路如下:- 首先,接受用户输入的年份。
这可以通过使用C语言的scanf函数等方法来实现。
- 然后,检查年份的有效性。
年份必须大于0且小于或等于当前年份。
这可以通过使用C语言的条件语句来实现。
- 接下来,确定年份的第一天是星期几。
这可以通过查找该年份第一天距离已知星期几(比如星期一)的天数来实现。
- 然后,确定该年份每个月的天数。
根据已知的规则(比如闰年规则),计算每个月的天数。
- 最后,根据以上信息,显示该年份的日历。
可以使用C语言的循环语句和格式化输出函数来实现。
第1页/共2页锲而不舍,金石可镂。
4. 主要函数本程序将包含以下主要函数:- int isLeapYear(int year):判断给定年份是否是闰年。
根据已知的闰年规则进行计算,并返回一个布尔值。
- int getFirstDayOfWeek(int year):确定给定年份的第一天是星期几。
根据该年份的第一天距离已知星期几的天数进行计算,并返回一个整数(代表星期几)。
- void printCalendar(int year):根据给定年份的信息,打印该年份的日历。
5. 测试和调试在开发过程中,可以使用一些测试和调试方法来确保程序的正确性和稳定性。
比如:- 输入测试:使用各种不同类型的数据(正常、边界和异常)进行测试,确保程序在各种情况下都能正常工作。
- 边界测试:测试该程序处理边界条件的能力,比如闰年、非闰年、最小年份、最大年份等。
c语言课程设计万年历
摘要随着当今世界的快速发展和信息化时代的来临,各种各样的小型智能家电产品陆续出现在我们的生活中。
日历是人们不可或缺的日常用品,但一般日历都为纸制用品,使用不便,寿命不长。
但利用c语言编译出来的万年历可以使用长久,并且能够很好地查询日期,方便快捷,可以大范围的使用。
本文通过c语言的编译,利用多个函数和数组,实现了对日期的快速查询。
例如:输入年月日,可以快速查询年历、月历以及该日为星期几。
关键词:万年历;函数;数组AbstractWith the era of rapid development and information in the world to come, of small intelligent home appliances products of all kinds have appeared in our life. The calendar is the daily necessities indispensable, but the inconvenience they are generally paper goods, life is not long. But the use of C language compiler from the calendar can be used for long, and is able to check the date, convenient, can use a wide range of.In this paper, through the C language compiler, using multiple function and the array, realize quick query on the date of the. For example: enter the date, can quickly check the calendar, calendar, the day of the week.Keyword: Perpetual calendar;Function;Array目录1 概述 (1)1.1设计题目及功能 (1)1.2 使用的所有变量的声明 (1)2总体设计 (2)2.1应用到的C语言 (2)2.3功能模块图 (4)4调试分析 (18)4.1年历的显示 (19)4.2月历的显示 (21)4.3日历的显示 (22)4.4 退出程序 (24)5总结和体会 (25)参考文献 (26)致谢 (27)1 概述1.1设计题目及功能题目:万年历课程设计功能:c语言实现万年历查询功能1、输入一个年份,在屏幕上输出该年的年历(包括每月的天数和所对应的星期几),并且在每月的左上角或右上角打印出相应的年份和月份,要求输出界面尽可能整齐、美观,符合年历显示规范。
VC 中CTime的用法 时间操作
VC++中CTime的用法时间操作VC++中CTime的几种用法:获得当前日期和时间CTime tm=CTime::GetCurrentTime();CStringstr=tm.Format("%Y-%m-%d");在VC中,我们可以借助CTime时间类,获取系统当前日期,具体使用方法如下:CTime t = CTime::GetCurrentTime(); //获取系统日期intd=t.GetDay(); //获得几号int y=t.GetYear(); //获取年份int m=t.GetMonth(); //获取当前月份int h=t.GetHour(); //获取当前为几时int mm=t.GetMinute(); //获取分钟ints=t.GetSecond(); //获取秒int w=t.GetDayOfWeek(); //获取星期几,注意1为星期天,7为星期六如果想计算两段时间的差值,可以使用CTimeSpan类,具体使用方法如下:CTime t1( 1999, 3, 19, 22, 15, 0 );CTime t =CTime::GetCurrentTime();CTimeSpan span=t-t1; //计算当前系统时间与时间t1的间隔int iDay=span.GetDays(); //获取这段时间间隔共有多少天intiHour=span.GetTotalHours(); //获取总共有多少小时int iMin=span.GetTotalMinutes();//获取总共有多少分钟int iSec=span.GetTotalSeconds();//获取总共有多少秒设置计时器定义TIMER ID#define TIMERID_JISUANFANGSHI 2在适当的地方设置时钟,需要开始其作用的地方;SetTimer(TIMERID_JISUANFANGSHI,200,NULL);在不需要的时候销毁掉时钟KillTimer(TIMERID_JISUANFANGSHI);消息映射void CJisuan::OnTimer(UINTnIDEvent){}///////////////////////////////////////////////////////////////////CTi meSpanCTimeSpan没有基类。
用c语言编写万年历思路
用c语言编写万年历思路摘要:1.编写万年历的思路2.C 语言编程基础知识3.实现万年历的算法4.具体编程步骤5.总结正文:编写万年历的思路:万年历是一种能够显示任意一年中每个月的日期、星期和节假日的日历。
它可以方便人们在日程安排、计划活动时提供参考。
用C 语言编写万年历,需要运用C 语言编程基础知识和实现万年历的算法。
下面我们将详细介绍如何用C 语言编写万年历的思路和具体编程步骤。
C 语言编程基础知识:C 语言是一种广泛应用的编程语言,它具有语法简单、执行速度快等特点。
C 语言编程基础知识包括数据类型、运算符、控制结构、函数、数组、指针等。
对于初学者来说,掌握这些基础知识是编写万年历的前提。
实现万年历的算法:实现万年历的算法较为复杂,但可以分为以下几个步骤:1.判断闰年:判断一个年份是否为闰年的方法是:能被4 整除且不能被100 整除,或者能被400 整除。
闰年的二月有29 天,平年二月有28 天。
2.计算每个月的天数:根据月份和是否为闰年,计算每个月的天数。
其中,1、3、5、7、8、10、12 月为大月,每月31 天;4、6、9、11 月为小月,每月30 天。
3.计算星期数:根据给定的日期,计算该日期是星期几。
4.输出结果:根据计算得到的每个月的天数、星期数和节假日,输出万年历。
具体编程步骤:1.定义一个结构体,用于存储每个月的天数、星期数和节假日。
2.编写一个函数,用于判断一个年份是否为闰年。
3.编写一个函数,用于计算每个月的天数。
4.编写一个函数,用于计算给定日期是星期几。
5.编写一个函数,用于输出万年历。
6.在主函数中,调用上述函数,输入一个年份,输出该年份的万年历。
总结:用C 语言编写万年历,需要掌握C 语言编程基础知识和实现万年历的算法。
通过分析算法,我们可以将问题分解为若干个子问题,编写相应的函数来实现。
最后,在主函数中调用这些函数,完成万年历的输出。
c比较日期的大小、c比较时间大小的方法
C#比较日期的大小、C#比较时间大小的方法下面整理一下非常实用的.N E T编程常用的代码分享给大家,这里分享的是C#三种比较时间大小、比较日期的方法1。
比较时间大小的实验s t r i n g st1="12:13";s t r i n g st2="14:14";D a t eT i m e dt1=C on v er t.T o Da t e T i m e(st1);D a t eT i m e dt2=C o n v er t.T o D a t eT i m e(st2);D a t eT i m e dt3=Da t eT i m e.N o w;i f(Da t eT i m e.C om pa r e(dt1,dt2)>0)m sg.T ex t=s t1+">"+st2;e l s em sg.T ex t=s t1+"<"+st2;m sg.T ex t+="\r\n"+dt1.T o St r i n g();i f(Da t eT i m e.C om pa r e(dt1,dt3)>0)m sg.T ex t+="\r\n"+st1+">"+dt3.T o St r i n g();e l s em sg.T ex t+="\r\n"+st1+"<"+dt3.T o St r i n g();2。
计算两个时间差值的函数,返回时间差的绝对值:p r i v a t e st r i n g Da t e Di f f(Da t eT i m e Da t eT i m e1,D a t e T i m e Da t eT i m e2){s t r i n g d a t e D i f f=n u l l;t r y{T i m e S pa n t s1=n ew T i m e S pa n(Da t eT i m e1.T i c k s);T i m e S pa n t s2=n ew T i m e Sp a n(Da t e T i m e2.T i c k s);T i m e S pa n t s=t s1.Su bt r a c t(t s2).Du r a t i o n();d a te D if f=t s.Da y s.T o St r i n g()+"天"+t s.H o u r s.T o S t r i n g()+"小时"+t s.M i n u t e s.T o St r i n g()+"分钟"+t s.S ec o n d s.T o St r i n g()+"秒";}c a t c h{}r et u r n da t e D i f f;}3。
VC++时间日期控件控件程序编程步骤(P110)
VC++时间日期控件控件程序编程步骤(P110)本信息对话框来添加和修改学生基本信息,如图。
[例Ex_Ctrl6SDI] 创建并使用学生基本信息对话框(1)用MFC AppWizard(exe)创建一个默认的单文档应用程序Ex_Ctrl6SDI。
(2)向应用程序中添加一个对话框资源IDD_STUINFO,标题定为“学生基本信息”,字体设为“宋体,9号”,创建此对话框类为CStuInfoDlg。
将[OK]和[Cancel]按钮的标题改为“确定”和“取消”。
(4)打开对话框网格,参看图的控件布局,为对话框添加如表所示的一些控件。
(1)打开ClassWizard的Member Variables页面,看看Class name是否是CStuInfoDlg,选中所需的控件ID号,双击鼠标。
依次为下列控件增加成员变量。
如表所示。
的初始值。
如下面的代码:CStuInfoDlg::CStuInfoDlg(CWnd* pParent /*=NULL*/): CDialog(CStuInfoDlg::IDD, pParent){m_bMale = FALSE;//{{AFX_DATA_INIT(CStuInfoDlg)…//}}AFX_DATA_INIT}代码中,//{{AFX_DATA_INIT(CStuInfoDlg)和//}}AFX_DATA_INIT之间的代码是控件变量的初始化代码,并由MFC ClassWizard自动管理。
(3)用MFC ClassWizard为CStuInfoDlg类添加WM_INITDIALOG消息映射,并添加下列初始化代码:BOOL CStuInfoDlg::OnInitDialog(){CDialog::OnInitDialog();// 设置单选按钮初始选中状态if (!m_bMale)CheckRadioButton(IDC_RADIO_MALE,IDC_RADIO_FEMALE,I DC_RADIO_FEMALE);elseCheckRadioButton(IDC_RADIO_MALE, IDC_RADIO_FEMALE, IDC_RADIO_MALE);// 这里对专业组合框进行初如化m_tBirth = CTime(1986, 1, 1, 0, 0, 0); // 对出生年月初始化UpdateData(FALSE);return TRUE; // return TRUE unless you set the focus to a control(4)用MFC ClassWizard为单选按钮IDC_RADIO_MALE添加BN_CLICKED的消息映射,并增加下列代码:void CStuInfoDlg::OnRadioMale(){m_bMale = TRUE;}(5)用MFC ClassWizard为单选按钮IDC_RADIO_FEMALE添加BN_CLICKED的消息映射,并增加下列代码:void CStuInfoDlg::OnRadioFemale(){m_bMale = FALSE;}(6)用MFC ClassWizard为按钮IDOK添加BN_CLICKED的消息映射,并增加下列代码:void CStuInfoDlg::OnOK(){UpdateData();m_strName.TrimLeft();m_strNo.TrimLeft();if (m_strName.IsEmpty())MessageBox("必须要有姓名!");else if (m_strNo.IsEmpty())MessageBox("必须要有学号!");elseCDialog::OnOK();}(1)打开Ex_Ctrl6SDI单文档应用程序的菜单资源,添加顶层菜单项“测试(&T)”,在其下添加一个菜单项“学生基本信息(&U)”,ID为ID_TEST_STUINFO。
C语言实现万年历小程序
C语⾔实现万年历⼩程序⼀、杂谈⼤⼀学了C之后⼀直困惑,C到底怎么⽤?它不像HTML那么直观,也没有SQL那么常⽤,更没有Java那么功能强⼤,那他为何还存在,并依然⽕热呢?答案很简单:编程语⾔是⼀家,C语⾔结构简单,但所蕴含的逻辑思维和其他语⾔⼤致相同,适合初学者。
编程不是⼀蹴⽽就,能⼒需要⽇积⽉累,推荐想我⼀样的初学者,⼤家⾃⼰动⼿玩玩简单的C程序!⼆、万年历像这样⼀个简单的全年⽇历,仔细观察不难发现由每个⽉的⽇历组成,每个⽉有最多6⾏,占6周,每周7天;程序如下:设定⽇历⼤⼩:int date[12][6][7]; //12个⽉,每⽉最多6⾏,每⾏7天int calendar[ ][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, //平年{31,29,31,30,31,30,31,31,30,31,30,31}}; //闰年int year;char title[]="SUN MON TUE WED THU FRI SAT"; //周⼏int sw,leap,i,j,k,wd,day; //变量// sw 周⼏,leap 0平年 1闰年,i,j,k辅助变量,wd 第⼏周,day ⽇提⽰⽤户输⼊想要查询的年份:(回车换⾏)printf("Please input the year whose calendar you want to know: ");scanf("%d%*c",&year);再计算该年1⽉1 ⽇是起于周⼏:(由于公元1⽉1⽇设为星期六,故3⽉1⽇为星期三。
为使算法达到最简,故本算法以“星期”为计算单位。
且选3⽉1⽇为基⽉。
每 4年(3个平年+1个闰年)共208周+5天 =208*7+5=1461每百年共100*(208周+5天)-1天=5217周+5天 (整百年暂设为平年)每400年共4*(5217周+5天)+1天(整400年闰)=20871周+0天即400年⼀轮回!)long int getyear(int year,int month){if(month<3) return year-1; //以元年3⽉为基⽯else return year;}long int getmonth(int month){if(month<3) return month+13; //将⽉份调⾄下个⽉else return month+1;}long int getday(int year,int month,int day){return 1461L*getyear(year,month)/4+153L*getmonth(month)/5+day; //计算距离元年3⽉1⽇天数//计算⽅法:每四年⼀周期1461天(相当于计算平均每年多少天)//每五个⽉⼀周期153天(相当于计算平均每⽉多少天)}int getweekday(int year,int month,int day){return(int)((getday(year,month,day)%7-2+7)%7); //得该⽇期的星期数//得到的天数除以7天取余,减去3⽉1⽇周三,其他均为保证正数1-7的附加计算}判断是否为闰年:leap= year%4==0 && year%100||year%400==0 ;将⽇历置为空:for(i=0;i<12;i++)for(j=0;j<6;j++)for(k=0;k<7;k++)date[i][j][k]=0;填充该年⽇期:sw=getweekday(year,1,1);for(i=0;i<12;i++)for(wd=0,day=1; day <= calendar[leap][i]; day++){date[i][wd][sw]=day;sw = ++sw%7;if(sw==0)wd++;}格式化输出:printf("\n|==================The Calendar of Year %d =====================|\n|",year); for(i=0;i<6;i++){for(wd=0,k=0;k<7;k++)wd+=date[i][5][k]+date[i+6][5][k];wd=wd?6:5;printf("%2d %s %2d %s |\n|",i+1,title,i+7,title);for(j=0;j<wd;j++){printf(" ");for(k=0;k<7;k++)if(date[i][j][k])printf("%4d",date[i][j][k]);else printf(" ");printf(" ");for(k=0;k<7;k++)if(date[i+6][j][k])printf("%4d",date[i+6][j][k]);else printf(" ");printf(" |\n|");}scanf("%*c");}puts("=================================================================|"); puts("\n Press any key to quit...");结果为完整代码:#include "stdio.h"long int getyear(int year,int month){if(month<3) return year-1;else return year;}long int getmonth(int month){if(month<3) return month+13;else return month+1;}long int getday(int year,int month,int day){return 1461L*f(year,month)/4+153L*g(month)/5+day;}int getweekday(int year,int month,int day){return(int)((n(year,month,day)%7-2+7)%7);}int date[12][6][7];int calender[ ][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};main(){int sw,leap,i,j,k,wd,day;int year;char title[]="SUN MON TUE WED THU FRI SAT";printf("Please input the year whose calendar you want to know: ");scanf("%d%*c",&year);sw=w(year,1,1);leap=year%4==0&&year%100||year%400==0;for(i=0;i<12;i++)for(j=0;j<6;j++)for(k=0;k<7;k++)date[i][j][k]=0;for(i=0;i<12;i++)for(wd=0,day=1;day<=day_tbl[leap][i];day++){date[i][wd][sw]=day;sw=++sw%7;if(sw==0) wd++;}printf("\n|==================The Calendar of Year %d =====================|\n|",year); for(i=0;i<6;i++){for(wd=0,k=0;k<7;k++)wd+=date[i][5][k]+date[i+6][5][k];wd=wd?6:5;printf("%2d %s %2d %s |\n|",i+1,title,i+7,title);for(j=0;j<wd;j++){printf(" ");for(k=0;k<7;k++)if(date[i][j][k])printf("%4d",date[i][j][k]);else printf(" ");printf(" ");for(k=0;k<7;k++)if(date[i+6][j][k])printf("%4d",date[i+6][j][k]);else printf(" ");printf(" |\n|");}scanf("%*c");}puts("=================================================================|"); puts("\n Press any key to quit...");}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
VC 日历控件使用
VC++编程技术连载---VC++日历控件使用2007-06-22 08:12:41VC++编程技术连载---VC++日历控件使用一、有关日历控件的介绍Win32 API提供了一个显示日期得当彩色日历控件,日期的显示模式是基于控制面板中的区域性设置或者说是依赖于用户的操作系统。
具体的日历控件如下图一所示:图一、日历控件显示效果这个常用的日历控件的标题条包含两个按钮和两个标签,左边的按钮准许用户单击选择前一个月份,左边的标签显示当前选择的月份,右边的标签显示当前日期中的年份。
右边的按钮是让用户选择下一个月份。
日历控件可以配置成显示多个月份,下图是一具体的实例:图二、显示多个月份的日历控件如果要让日历控件显示多个月份,按钮的个数将通过前月或后月列表来增加或减少。
例如,如果控件正在显示4月或5月,这时用户点击了左边的按钮,控件将显示3月或4月;如果用户点击了右边的按钮,控件将显示5月和6月。
此外,选择当前年份中的任意一个月份,用户可以点击标题框中的月份名,这时候将显示一个月份列表供用户来选择。
具体如图所示:图三、显示月份列表如果要更改年份,用户可以点击年份标签,这时候将显示旋转按钮,用户可以通过点击旋转按钮的上下键来更改年份,也可以使用键盘上的上下箭头来更改年份。
图四、更改日历控件的年份在标题条的下面,根据控制面板的格式显示着星期的简写,在英语地区,每个星期的第一天通常是星期天。
开发人员可以改变控件中的第一天设置。
控件上,当前选择的日期有一圆圈。
用户可以点击欲选择的日期来在控件上选择一个日期。
在大部分地区,日期以数字的形式显现在一个白色背景上(这个背景颜色乃至控件上的任何颜色可以通过程序来改变)。
默认的情况下,控件显示一个椭圆围绕的当前日期。
使用标题条按钮、月份和年份标签,用户可以更改日期。
如果控件显示的不是当前日期,用户可以通过点击控件底部显示今天日期的标签来使控件显示今天的日期。
(如果你是一个程序员,可以隐藏控件底部这个显示今日日期的标签)。
VC时间编程
VC时间编程——API函数、CTime类、日期月历控件一获取时间的API函数二获取进程和线程的相关时间三文件时间和系统时间之间的转换四CTime类五时间控件一获取时间的API函数SYSTEMTIMEtypedef struct_SYSTEMTIME{WORD wYear;//年WORD wMonth;//月WORD wDayOfWeek;//星期星期日为0星期一为1以此类推。
WORD wDay;//日WORD wHour;//小时WORD wMinute;//分钟WORD wSecond;//秒WORD wMilliseconds;//毫秒}SYSTEMTIME;GetLocalTimeVOID GetLocalTime(LPSYSTEMTIME lpSystemTime//address of system time structure);功能:获取当前的系统时间(本地区的时间)。
参数:lpSystemTime出参,保存当前的系统时间。
SetLocalTimeBOOL SetLocalTime(CONST SYSTEMTIME*lpSystemTime//address of local time to set);功能:设置系统时间参数:lpSystemTime是SYSTEMTIME结构体指针,用指定的SYSTEMTIME结构体中的信息设置当前系统时间。
GetSystemTimeVOID GetSystemTime(LPSYSTEMTIME lpSystemTime//address of system time structure);功能:获取当前的系统时间。
这个时间使用世界标准时间(UTC)来表示的。
GetTickCountDWORD GetTickCount(VOID)功能:返回系统启动到目前的毫秒数。
二获取进程和线程的相关时间GetThreadTimesBOOL GetThreadTimes(HANDLE hThread,//specifies the thread of interestLPFILETIME lpCreationTime,//when the thread was createdLPFILETIME lpExitTime,//when the thread was destroyedLPFILETIME lpKernelTime,//time the thread has spent in kernel mode LPFILETIME lpUserTime//time the thread has spent in user mode);功能:获得线程的相关时间参数说明:hThread线程句柄lpCreationTime指向一个FILETIME结构体返回线程被创建时的时间;lpExitTime指向一个FILETIME结构体返回线程被终止时的时间;lpKernelTime指向一个FILETIME结构体返回线程在内核模式下执行的累计时间;lpUserTime指向一个FILETIME结构体返回线程在用户模式下执行的累计时间;返回值:成功,则返回TRUE;失败,则返回FALSE。
VC++数据库编程日期时间类变量的处理
VC++数据库编程日期时间类变量的处理C++编程时对日期时间类变量的处理一般采用CTime与COleDateTime CTime类1) 获取当前时间。
CTime time;time = CTime::GetCurrentTime();2) 获取时间元素。
int year = time.GetYear() ;int month = time.GetMonth();int day = time.GetDay();int hour = time.GetHour();int minute = time.GetMinute();int second = time.GetSecond();int DayOfWeek = time.GetDayOfWeek() ;Returns the day of the week based on local time; 1 = Sunday, 2 = Monday, to 7 = Saturday 3) 获取时间间隔。
CTimeSpan timespan(0,0,1,0); // days,hours,minutes,secondstimespan = CTime::GetCurrentTime() - time;4) 把时间转换为字符串。
CString sDate,sTime,sElapsed Time ;sDate = time.Format("%m/%d/%y"); //ex: 12/10/98sTime = time.Format("%H:%M:%S"); //ex: 9:12:02sElapsed Time = timespan.Format("%D:%H:%M:%S");// %D is total elapsed days要想知道更多的时间格式,参见M F C文档中的strftime。
COleDateTime类1) 获得一年中的某一天。
C# DateTimePicker控件说明
Visual C#中的DateTimePicker的使用简介2010-12-06 11:28:56| 分类:c# | 标签:|字号大中小订阅在C#中控件是很友好的,但是有一些控件使用起来有一点不方便, DateTimePicker控件用着很方便,但是要根据自己的需要取值还是不那么容易.要用DateTimePicker控件取日期,插入到一个DateTime属性的ACCESS表的列中,同时要把两个取值相差得出天数,插入到一个数据型列中,但是在编写过程中总是出错,我的代码如下:string instr1 = "insert into Leave(eNo,eName,LeaveType,StartDay,EndDay,Days) values('" + stNo + "','"+ stName + "','" + textBox5.Text + "','" + dateTimePicker1.Value.Date.ToShortDateString() + "','" + dateTimePicker2.Value.Date.ToShortDateString() + "'," + Convert.ToInt32(dateTimePicker2.Value.Date -dateTimePicker1.Value.Date).ToString() + ")";string flag1 = DB.insert(instr1);if ( flag1 == "1")...{MessageBox.Show("考勤登记成功!");}else...{MessageBox.Show("考勤登记失败!");}但是系统总是提示INSERT INTO语句出错,无法把一个无限长的数据转换成整型.怎么回事呢?有MESSAGEBOX把instr1的值给显示了一下,发现两个dataTimePicker相减的值为:天数00:00:00 ,怪不得会出错,于是我的原代码中的dateTimePicker1.value.Date-dateTimeRicker2.Value.Date改变为(dateTimePicker2.Value.Date - dateTimePicker1.Value.Date).Substring (0,2),则执行成功了!于的我把DateTimePicker的用法总结如下:dateTimerPicker1.Value 获取所选择的日期/时间dateTimerPicker1.Text 获取控件显示的"XXXX年XX月XX日"dateTimerPicker1.Value.Date 获取当前控件把选取的短日期这些都是常用的,其他的属性可以查看MSDN上面的说明,对了,要获取两个日期控件相差的值,也就是两个日期的相差天数,代码应如下写:(dateTimePicker2.Value.Date -dateTimePicker1.Value.Date).Substring (0,2)。
C语言实现农历万年历
农历数据:
第 23 位 保留
第 22 至 17 位 农历正月初一的年内序数
第 16 至 13 位 闰月
第 12 至 0 位 月份大小信息
因此,农历数据使用 24 个位,即 3 字节。
上述四个块,分别有如下含义:
3 / 48
2016 年全新原创
C 语言实现农历万年历
paradise300
① 保留位始终为 0; ② 农历正月初一距离公历元旦的天数; ③ 0 表示无闰月,1 至 12 表示闰月月份; ④ 从低位到高位分别对应从正月到(闰)十二月的每个月的大小,“1”表 示大月,即该月有 30 天,“0”表示小月,即该月有 29 天。
//1899年农历十月及以后的月份,每月初一在1900年内的序数。 //cPreMonth中分别对应农历的十月、十一月、十二月、正月。 char const cPreMonth[4]={-59,-29,0,30};
//农历月份信息。一年用个字节表示
//+-----------------------------------------------------------------------+
节气数据:
经统计,公历年的首个节气均为“小寒”。
第 47 至 46 位
第 45 至 0 位
小寒的年内序数减 3 从大寒到冬至每个节气 2 个位,表示距上一节气天数
5 / 48
2016 年全新原创
C 语言实现农历万年历
paradise300
其中第一部分,在使用时,两位数据需要加上 3,才能得到小寒的年内序数, 第二部分,第 45 至 44 位,表示了大寒距离小寒的天数,第 43 至 42 位,表示立 春距离大寒的天数,……以此类推。