欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux系统下获取、修改时间的方法

程序员文章站 2022-03-08 19:35:10
...

Linux系统下获取时间的方法:

void Get_Systime(void)	    //获取系统时间
{
    time(&timep);
    ptm = gmtime(&timep);
    stSystemTime.usYear = ptm->tm_year + 1900;
    stSystemTime.ucMon = ptm->tm_mon + 1;
    stSystemTime.ucDay = ptm->tm_mday;
    stSystemTime.ucHour = ptm->tm_hour;
    stSystemTime.ucMin = ptm->tm_min;
    stSystemTime.ucSec = ptm->tm_sec;
}

Linux系统下修改时间的方法:

int SetSystemTime(void)	    //修改系统时间   不能写到使用settimeofday()不能真正的修改系统时间
{
    char t_string[] = "2012-04-28 22:30:00";
    struct tm time_tm;
    struct timeval time_tv;
    time_t timep;
    int ret = 0;

    sscanf(t_string, "%d-%d-%d %d:%d:%d", &time_tm.tm_year, &time_tm.tm_mon, &time_tm.tm_mday, &time_tm.tm_hour, &time_tm.tm_min, &time_tm.tm_sec);
    time_tm.tm_year -= 1900;
    time_tm.tm_mon -= 1;
    time_tm.tm_wday = 0;
    time_tm.tm_yday = 0;
    time_tm.tm_isdst = 0;

    timep = mktime(&time_tm);
    time_tv.tv_sec = timep;
    time_tv.tv_usec = 0;

    ret = settimeofday(&time_tv, NULL);
    if(ret != 0)
    {
        fprintf(stderr, "settimeofday failed\n");
        return -1;
    }
    return 0;
}

#include <time.h>
int stime(time_t *t);
参数说明:
t是以秒为单位的时间值,从GMT1970年1月1日0时0分0秒开始计算。

#include <time.h>
#include <stdio.h>
#include <sys/time.h>
int main()
{
    long int time_sec = 0;
    int ret = 0;
    ret = stime(&time_sec);		//time_sec是以秒为单位的时间值,从GMT1970年1月1日0时0分0秒开始计算
     if(ret != 0)
 	printf("set error\n");
     fflush(stdout);

    system("hwclock --systohc");	//注意:使用stime不能真正的修改系统时间,当重新启动计算机之后,可以观察到修改无效。因为stime没有将
    时间写入CMOS.要写入bois需要调用 hwclock -w 程序
}