热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通过C++的类设置系统时间和输出时间

#include#includeusingnamespacestd;classTDate{public:voidSetDate(inty,intm,intd);i
#include
#include 
using namespace std;
class TDate
{
public:
	void SetDate(int y,int m,int d);
	int IsLeapYear();
	void SetTime(int h,int m,int s);
	void DisplayTime();
private:
	int year,month,day;
	int hh,min,sec; 
    time_t timep; 
	
/*tm结构在time.h中的定义:
struct tm {
	int tm_sec;  		//秒–取值区间为[0,59] 
	int tm_min;  		//分 - 取值区间为[0,59] 
	int tm_hour;  		//时 - 取值区间为[0,23] 
	int tm_mday; 		//一个月中的日期 - 取值区间为[1,31] 
	int tm_mon; 		//月份(从一月开始,0代表一月) - 取值区间为[0,11] 
	int tm_year; 		//年份,其值从1900开始 
	int tm_wday; 		//星期–取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 
	int tm_yday; 		//从每年的1月1日开始的天数–取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 
	int tm_isdst; 		//夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。
	long int tm_gmtoff; //指定了日期变更线东面时区中UTC东部时区正秒数或UTC西部时区的负秒数
	const char *tm_zone;//当前时区的名字(与环境变量TZ有关)
};*/
    struct tm *p_tm;
	

/*头文件: ;timeval结构的用于指定时间值
struct timeval
{
	time_t tv_sec; 		//秒 [long int]
	suseconds_t tv_usec;//微秒 [long int]
};*/
	struct timeval time_tv;	
};
void TDate::SetDate(int y,int m,int d)
{
	year =y;
	mOnth= m;
	day =d;

/*time() 函数返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数。[1] 
主要用来获取当前的系统时间,返回的结果是一个time_t类型,
其值表示从UTC(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)
到当前时刻的秒数。然后调用localtime函数将time_t所表示的UTC时间转换为本地时间(我们是+8区,比UTC多8个小时)
并转成struct tm类型,该类型的各数据成员分别表示年月日时分秒。*/
	timep = time(NULL);
	p_tm = localtime(&timep);
	p_tm->tm_year = y - 1900;
	p_tm->tm_mon = m-1;
	p_tm->tm_mday = d;
	
/*mktime()用来将参数p_tm所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数*/
	timep = mktime(p_tm);
	
	time_tv.tv_sec = timep;
	time_tv.tv_usec = 0;
	
/*
头文件:#include
函数原型:int settimeofday ( const struct timeval *tv,const struct timezone *tz);
settimeofday()会把目前时间设成由tv所指的结构信息,当地时区信息则设成tz所指的结构。
其参数tv是保存设置时间结果的结构体,参数tz用于保存时区结果
注意,只有root权限才能使用此函数修改时间。成功则返回0,失败返回-1,错误代码存于errno。
EPERM 并非由root权限调用settimeofday(),权限不够。
EINVAL 时区或某个数据是不正确的,无法正确设置时间。
如果tv或tz某一项为NULL,表示对相关的信息不感兴趣。*/
	settimeofday(&time_tv,NULL);
	
}
void TDate::SetTime(int h,int m,int s)
{
	hh=h;
	min=m;
	sec=s;
	
	timep = time(NULL);
	p_tm = localtime(&timep);
	p_tm->tm_hour = h;
	p_tm->tm_min = m;
	p_tm->tm_sec = s;
	
	//timep = time(NULL);
	timep = mktime(p_tm);
	
	time_tv.tv_sec = timep;
	time_tv.tv_usec = 0;
	settimeofday(&time_tv,NULL);
}
int TDate::IsLeapYear()
{
	return(year%4==0 && year%100!=0)||(year%400==0);
}
void TDate::DisplayTime()
{
	timep = time(NULL);
	p_tm = localtime(&timep);
	cout <tm_year+1900 <<"年";
	cout <tm_mon+1 <<"月";
	cout <tm_mday <<"日";
	cout <<" " <<"星期" <tm_wday;
	cout <<" " <tm_hour <<":" <tm_min <<":" <tm_sec;
	if(TDate::IsLeapYear()) cout <<" 润年";
	cout <> y >> m >> d >> h >> min >> s;
	date.SetDate(y,m,d);
	date.SetTime(h,min,s);
	date.DisplayTime();
	cout <

通过C++的类设置系统时间和输出时间


推荐阅读
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
author-avatar
袁怡松_779
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有