Linux C++ 获取和设置系统时间

CSystemTime.h


/*
 * 	CSystemTime.h
 *
 *  Created on: 2014-3-12
 *  Author: qinyinghao
 *  用于获取和设置系统时间
 */

#ifndef CSYSTEMTIME_H_
#define CSYSTEMTIME_H_
extern "C" {
#include <time.h>
#include <sys/time.h>
}
namespace qyh {

typedef struct {
	int year;
	int month;
	int day;
	int hour;
	int minute;
	int second;
} TIME;

class CSystemTime {
public:
	CSystemTime();
	virtual ~CSystemTime();

	/*
	 * 设置系统时间(当地时间)
	 * 需要管理员权限才能成功设置
	 * 设置失败返回false
	 * 设置成功返回true
	 */
	bool setSystemTime(TIME *_time);

	/*
	 * 获取系统国际标准时间
	 */
	TIME* getSystemUTCTime();

	/*
	 * 获取系统当地时间
	 */
	TIME* getSystemLocalTime();
};

} /* namespace qyh */
#endif /* CSYSTEMTIME_H_ */


CSystemTime.cpp


/*
 * 	CSystemTime.cpp
 *
 *  Created on: 2014-3-12
 *  Author: qinyinghao
 */

#include "CSystemTime.h"

namespace qyh
{

CSystemTime::CSystemTime()
{
}

CSystemTime::~CSystemTime()
{
}

bool CSystemTime::setSystemTime(TIME *_time)
{
	struct tm *p = new struct tm();
	struct timeval tv;
	struct timezone tz;
	gettimeofday (&tv , &tz);//获取时区保存tz中
	p->tm_year = _time->year - 1900;
	p->tm_mon = _time->month - 1;
	p->tm_mday = _time->day;
	p->tm_hour = _time->hour;
	p->tm_min = _time->minute;
	p->tm_sec = _time->second;
	time_t utc_t = mktime(p);
	delete(p);
	tv.tv_sec = utc_t;
	tv.tv_usec = 0;
	if (settimeofday(&tv, &tz) < 0)
	{
		return false;
	}
	return true;
}

TIME* CSystemTime::getSystemUTCTime()
{
	TIME *t = new TIME();
	time_t timep;
	struct tm *p;
	time(&timep);
	p = gmtime(&timep); //获取UTC时间
	t->year = 1900 + p->tm_year;
	t->month = 1 + p->tm_mon;
	t->day = p->tm_mday;
	t->hour = p->tm_hour;
	t->minute = p->tm_min;
	t->second = p->tm_sec;
	return t;
}

TIME* CSystemTime::getSystemLocalTime()
{
	TIME *t = new TIME();
	time_t timep;
	struct tm *p;
	time(&timep);
	p = localtime(&timep); //取得当地时间
	t->year = 1900 + p->tm_year;
	t->month = 1 + p->tm_mon;
	t->day = p->tm_mday;
	t->hour = p->tm_hour;
	t->minute = p->tm_min;
	t->second = p->tm_sec;
	return t;
}

} /* namespace qyh */


  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值