您的位置:首页 > 运维架构 > Linux

Linux c 获取和设置本地时间的方法

2015-09-25 11:18 597 查看
time 函数说明请自己在终端 man time.

直接上代码

适合跟我一样的菜鸟

#include <stdio.h>
#include <stdlib.h>
#include <linux/rtc.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <time.h>
#include "app.h"

extern unsigned char recvMAC[6];
extern unsigned char localTime[7];
extern unsigned char localMAC[6];
extern unsigned char fw_version[12];
extern unsigned char sensorlist_version[12];
/* struct tm
{
int tm_sec; //秒值
int tm_min; //分钟值
int tm_hour; //小时值
int tm_mday; //本月第几日
int tm_mon; //本年第几月
int tm_year; //tm_year+1900=哪一年
int tm_wday; //本周第几日
int tm_yday; //本年第几日
int tm_isdst; //日光节约时间
}
*/
int getLocalTime(void)
{
int i;
unsigned short year;
//unsigned short yearH;
//unsigned short yearL;
struct tm *local;
time_t t;
t = time(0); //获取日历时间
local = localtime(&t); //将日历时间转化为本地时间,并保存在struct tm结构中
printf("local time is %d:%d:%d:%d:%d:%d\n",1900+local->tm_year,
1+local->tm_mon,
local->tm_mday,
local->tm_hour,
local->tm_min,
local->tm_sec);
year=1900+local->tm_year;

localTime[0]=year>>8;
localTime[1]=year&0x00ff;
localTime[2]=1+local->tm_mon;
localTime[3]=local->tm_mday;
localTime[4]=local->tm_hour;
localTime[5]= local->tm_min;
localTime[6]= local->tm_sec;
for(i=0;i<7;i++)
printf("0x%02x\n",localTime[i]);
printf("\n");
return 0;
}
/************************************************
设置操作系统时间
参数:*dt数据格式为"2015-9-20 20:30:30"
调用方法:
char *pt="2015-9-20 20:30:30";
setLocalTime(dt);
**************************************************/
int setLocalTime(char *dt)
{
struct rtc_time tm;
struct tm _tm;
struct timeval tv;
time_t timep;
sscanf(dt, "%d-%d-%d %d:%d:%d", &tm.tm_year,
&tm.tm_mon, &tm.tm_mday,&tm.tm_hour,
&tm.tm_min, &tm.tm_sec);
_tm.tm_sec = tm.tm_sec;
_tm.tm_min = tm.tm_min;
_tm.tm_hour = tm.tm_hour;
_tm.tm_mday = tm.tm_mday;
_tm.tm_mon = tm.tm_mon - 1;
_tm.tm_year = tm.tm_year - 1900;

timep = mktime(&_tm);
tv.tv_sec = timep;
tv.tv_usec = 0;
if(settimeofday (&tv, (struct timezone *) 0) < 0)
{
printf("Set system datatime error!/n");
return -1;
}
return 0;

}
希望对你有帮助
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: