window下时间设置

article/2025/10/12 10:21:46

用了蛮长时间搞出点东西,还被上面鄙视了一番,算了不抱怨了,在鄙视中成长,在鄙视中强大。

我主要是完成两个两个功能:第一个是设置系统时间将其转换成十六进制精确到分钟显示出来(这个VC中有现成的api,以前没搞过MFC现学现用,搞的稀烂,很简单的东西走了很多冤枉路)第二个就是我输入自己的一个时间字符串,然后将其转换成相对于197011000秒的时钟的输出,输出也是十六进制。如下图:


如果是第一个:我就不用输入时钟值,直接调用API函数 time(&timer);然后iMin = time(&timer)/60;因为这个函数返回的时间是相对197011000秒一共的秒数,对60去整得到精确到分钟的分钟数。

如果是第二个:我输入20120424150600,这是一个字符串,系统不会把他当成时钟,所以要想法,直接看代码吧:

BOOL COtpTestDlg::OnTimeTransform() 
{// TODO: Add your control notification handler code hereCString								strTemp;SYSTEMTIME							stST = {0};ByteArray							baTime;
//	unsigned long int 					iMin;char                                array[15];char                                arrayyear[5];char                                arraymonth[3];char                                arrayday[3];char                                arrayhour[3];char                                arraymin[3];char                                arraysec[3];time_t								timer;SYSTEMTIME							m_myLocalTime;char								zero[]={0};//输入字符串到tmp中if(GetDlgItemText(IDC_EDIT_TIME_VALUE,strTemp)){memset(array,'\0',sizeof(array));//将strTmp内容拷贝到array中memcpy(array,strTemp.GetBuffer(0),strTemp.GetLength());//讲array中填满年月日时分秒memcpy(arrayyear,array,sizeof(arrayyear)-1);memcpy(arraymonth,array+4,sizeof(arraymonth)-1);memcpy(arrayday,array+6,sizeof(arrayday)-1);memcpy(arrayhour,array+8,sizeof(arrayhour)-1);memcpy(arraymin,array+10,sizeof(arraymin)-1);	memcpy(arraysec,array+12,sizeof(arraysec)-1);//将array年月日时分秒字符串转化成整数m_myLocalTime.wYear = (WORD)atoi(arrayyear);m_myLocalTime.wMonth = (WORD)atoi(arraymonth);m_myLocalTime.wDay = (WORD)atoi(arrayday);m_myLocalTime.wHour = (WORD)atoi(arrayhour);m_myLocalTime.wMinute = (WORD)atoi(arraymin);m_myLocalTime.wSecond = (WORD)atoi(arraysec);if (strTemp.GetLength() != 14){AfxMessageBox(_T("输入长度不合法,请重新输入"));SetDlgItemText(IDC_EDIT_TIME_VALUE,zero);return FALSE;}else {	//自定时钟,判断年月日的合法性,因为开发人员不知道输入的字符串是否符合闰年和平年if (timeIsVaild(m_myLocalTime.wYear,m_myLocalTime.wMonth,m_myLocalTime.wDay,m_myLocalTime.wHour,m_myLocalTime.wMinute,m_myLocalTime.wSecond)){CTime tbase(1971,1,1,0,0,0);CTime tend(m_myLocalTime);CTimeSpan span = tend- tbase;//STATIC_TIME是(1971,1,1,0,0,0)与(1970,1,1,0,0,0)并不是365天的分钟数,也不是366天的分钟数,是用巧妙的方法得出来的常数//首先用把系统时间设置成m_m_myLocalTime,可以用系统给的接口求出m_m_myLocalTime相对1970的分钟数,再减去span.GetTotalMinutes()//就得到STATIC_TIMEiMin = span.GetTotalMinutes()+STATIC_TIME;//讲分钟以十六进制输出_itoa(iMin,array,16);GetDlgItem(IDC_TIME_TRAN_RESULT)->SetWindowText(array);return TRUE;}return FALSE;}
// 		CTime tbase(1971,1,1,0,0,0);
// 		CTime tend(m_myLocalTime);
// 		CTimeSpan span = tend- tbase;
// 		iMin = span.GetTotalMinutes()+STATIC_TIME;	
// 		_itoa(iMin,array,16);
// 		GetDlgItem(IDC_TIME_TRAN_RESULT)->SetWindowText(array);
// 		else
// 			AfxMessageBox(_T("请重新输入"));}else{	iMin = time(&timer)/60;_itoa(iMin,array,16);GetDlgItem(IDC_TIME_TRAN_RESULT)->SetWindowText(array);	return TRUE;}
}BOOL COtpTestDlg ::isLeapYear( WORD year )
{
//  if (year%400 == 0 || (year%4 == 0 && year%100 != 0))
// 
// 	return TRUE;
// 
// 	return FALSE;if (year%400 == 0 || (year%4 == 0 && year%100 != 0)){return TRUE;}return FALSE;
}//时钟合法性判断
BOOL COtpTestDlg :: timeIsVaild(WORD wYear, WORD wMonth, WORD wDay, WORD wHour, WORD wMinute, WORD wSecond )
{	char								zero[14]={0};
//天数判断switch(wMonth){case 1: case 3: case 5: case 7: case 8: case 10: case 12:{if (wDay > 31){AfxMessageBox(_T("天数不合法,请重新输入"));SetDlgItemText(IDC_EDIT_TIME_VALUE,zero);return FALSE;}break;}case 2:{if (isLeapYear(wYear)){if (wDay > 29){AfxMessageBox(_T("天数不合法,请重新输入"));SetDlgItemText(IDC_EDIT_TIME_VALUE,zero);return FALSE;}break;}else{if(wDay > 28){AfxMessageBox(_T("天数不合法,请重新输入"));SetDlgItemText(IDC_EDIT_TIME_VALUE,zero);return FALSE;}break;}}case 4: case 6: case 9: case 11:{if (wDay > 30){AfxMessageBox(_T("天数不合法,请重新输入"));SetDlgItemText(IDC_EDIT_TIME_VALUE,zero);return FALSE;}break;}default:{AfxMessageBox(_T("月份不合法,请重新输入"));SetDlgItemText(IDC_EDIT_TIME_VALUE,zero);return FALSE;}}//小时分钟秒的判断if (wHour > 23 || wMinute > 59 || wSecond > 59){AfxMessageBox(_T("时分秒不合法,请重新输入"));SetDlgItemText(IDC_EDIT_TIME_VALUE,zero);return FALSE;}return TRUE;
}





http://chatgpt.dhexx.cn/article/CDIIShLg.shtml

相关文章

Date、Time、DateTimes设置

撰写时间:2019年06月16日 在数据库中设置的Date、Time、datetime类型,在Vs中Date、datetime便会自动转化为DataTIme类型,而Time类型则会转化为TimeSpan类型 常常在查出时间、日期的数据时都会乱码,就像下图一样,那么…

如何更改Windows服务器时间

Windows操作系统自带时间同步功能,它会自动从互联网时间服务器获取时间,以保证系统时间的准确性。但是,有时候我们需要更改时间服务器,以获得更准确的时间同步。小编将为大家介绍如何更改Windows时间服务器,以及Window…

Windows将时间设置到秒的方法

使用win10系统的用户应该都发现了,Win10系统右下角时间只显示到分,不会显示到秒,如果想要看到秒的话,需要点击一下时间才会弹出。那么,Win10系统时间怎么显示到秒? 默认情况下,需要点击后方可查看时间详情…

设置linux的时间

目录 一、什么是时间 (1)例子1 (2)例子2 二、什么是本地时间 三、linux设置本地时间的方法 (1)方式一:通过互联网自动同步 1.修改时间同步服务器 2.查看时间同步情况 (2&…

win10电脑时间同步设置方法

win10系统的时间与日期默认是跟网络时间同步的,这样可以保持电脑时间的准确。不过有网友反映自己的win10电脑时间不对,调准时间后过段时间又是如此,不知道如何设置win10电脑时间同步。下面小编就教下大家win10电脑时间同步设置方法。 具体的…

简单3招教你设置电脑时间

案例:电脑时间怎么设置? 【我使用电脑时,电脑显示的时间一直不对,这导致我非常不方便,想问下大家平常使用电脑时有什么设置电脑时间比较简单的方法吗?】 电脑的时间设置很重要,不仅可以保证电…

超越函数e^(-x^2)收敛

超越函数e(-x2)收敛 Γ ( z ) ∫ 0 ∞ e − x 2 d t . \Gamma(z) \int_0^\infty e^{-x^2}dt\,. Γ(z)∫0∞​e−x2dt. 原函数不能直接积分所以采用极坐标变换的方式求解,本人自用码住

积分抵现

积分抵现设置教程 积分抵现 积分抵现包括积分抵现比率、是否开启积分抵现和积分说明。 其中,积分抵现比率为 1积分可抵多少元现金 转载于:https://my.oschina.net/u/4103048/blog/3099967

常见不可积积分

from sympy import * x symbols(x) a sin(x)/x b exp(x**2) c cos(x)/x d sin(x**2) e cos(x**2) f x/ln(x) g ln(x)/(x1) A integrate(a,x) # Si(x)-->超越函数 B integrate(b,x) # sqrt(pi)*erfi(x)/2-->erfi(x)误差函数 C integrate(c,x) # -log…

超越函数e^(-x^2)在(-∞, +∞)上的定积分的两种解法

令 解法一 二重积分极坐标 故 解法二 Γ函数余元公式 又由余元公式,有 于是 故

加速度计求二次积分

我是勤劳的搬运工:https://blog.csdn.net/u011006622/article/details/56286833 摘要 此文档描述并使用MMA7260QT三轴加速计和低功耗的9S08QG8八位单片机实现求解位置的算法 。 在今天先进的电子市场,有不少增加了许多特性和智能的多功能的产品。定…

python绘制积分函数_Python超越函数积分运算以及绘图实现代码

编译环境:ubuntu17.04 Python3.5 所需库:numpy、scipy、matplotlib 下面是理想平面的辐射强度计算(课程大作业~~~) 1、超越函数积分运算 def integral(x,c1,c2,T): return ((c1*0.98)/(x**5))*(1/((np.e**(c2/(x*T)))-…

高数 | 【定积分、变限积分】【一元函数积分学李林880】 及 巧解例题

一、定积分的概念、性质及几何意义 巧解:利用奇偶性,快速选出答案。 利用图形帮助解题。 设出具体函数。 二、定积分的计算 1.利用几何意义 2.换元法巧解 3.区间平移 本题也可用用区间再现 4.绝对值符号讨论 三、变上限定积分 三种变限积分形式 四、李…

Python超越函数积分运算以及绘图实现

编译环境:ubuntu17.04 Python3.5 所需库:numpy、scipy、matplotlib 下面是理想平面的辐射强度计算(课程大作业~~~) 1、超越函数积分运算 def integral(x,c1,c2,T): return ((c1*0.98)/(x**…

巧用二重积分的积分中值定理

二重积分的积分中值定理,对于部分题目来说,例如极限题目,积分证明题的运用十分便捷。 在解决极限问题中,几分钟值定理能大大简化求解过程,在求极限过程中,包含有二重积分的问题一般都是通过逐渐化简求导来解…

重积分的计算与理解

主要分为二重积分和三重积分。 二重积分 二重积分的基本思想是变成两次积分。物理意义已知面密度f,算质量 即首先把y方向的每一根线段计算出质量(相当于把y的线捏起来了),然后算x 主要方法如下: 计算 ∬ D f ( x , y ) \iint \limits_Df(x,y) D∬​f(x…

三重积分为何不能直接带入积分区域?搞懂这些,重积分基本可以了

积分的积分区域及被积表达式 重点:积分的结果均为数值,仅与被积表达式和积分区间有关!!! 1.如何一下子区分一重积分,二重积分,三重积分? 看积分区间和被积表达式: 一重…

正态分布与超越函数

原文地址: https://blog.csdn.net/lyghe/article/details/80827812 https://blog.csdn.net/HNUCSEE_LJK/article/details/86999897 记忆正态分布公式 超越函数 e − x 2 e^{-x^2} e−x2在(-∞, ∞)上的定积分 令 I ∫ − ∞ ∞ e − x 2 d x I\int_{-\infty}^{\…

多重积分

重积分终于学完了,感觉掌握的还不是很牢固,借着这次总结,争取把重积分学牢固! 首先是二重积分的定义以及物理意义 更正一下,上图ps:该柱体的底面在区域D上。 二重积分的性质中,有三条挺重要,证…

超越实数系构建微积分已经不再是梦想

请看以下相片: 这是当代最多产的数学家Saharon Shelah的近照。截至到2012年,S.Shelah共计发表1,000多篇数学论文(其中220篇是与别人合著)。S.Shelah生与1945年7月3日,国籍以色列,其师M.Rabin是知名计算机科…