#include<time.h>
#include <sys/time.h>
#include<stdio.h>
//gcc -o systime systime.c
int getSystemTime()   
{   
    time_t timer;   
    struct tm t_tm;   
    time(&timer);   
    localtime_r(&timer, &t_tm);   
    printf("today is %4d/%02d/%02d %02d:%02d:%02d\r\n", t_tm.tm_year+1900,   
    t_tm.tm_mon+1, t_tm.tm_mday, t_tm.tm_hour, t_tm.tm_min, t_tm.tm_sec);   
    return 0;   
}

/************************************************
设置操作系统时间
参数:*dt数据格式为"2006-4-20 20:30:30"
调用方法:
    char *pt="2006-4-20 20:30:30";
    SetSystemTime(pt);
**************************************************/  
int SetSystemTime(void)  
{  
    struct tm rtc_time;  
    struct tm _tm;
    struct timeval tv;
    time_t timep;
    char dt[128];
    printf("Input date, format: 2006-4-20 20:30:30\r\n");
    fgets(dt, 128, stdin);
    printf("Your input is %s\r\n", dt);
    sscanf(dt, "%d-%d-%d %d:%d:%d", &rtc_time.tm_year,  
        &rtc_time.tm_mon, &rtc_time.tm_mday,&rtc_time.tm_hour,  
        &rtc_time.tm_min, &rtc_time.tm_sec);  
    _tm.tm_sec = rtc_time.tm_sec;  
    _tm.tm_min = rtc_time.tm_min;  
    _tm.tm_hour = rtc_time.tm_hour;  
    _tm.tm_mday = rtc_time.tm_mday;  
    _tm.tm_mon = rtc_time.tm_mon - 1;  
    _tm.tm_year = rtc_time.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;  
}

void Usage(void)
{
    printf("    -h, help\n"
        "    -s, set systime\n"
        "    -g, get systiem\n");
}

int main(int argc, char *argv[])
{
    int s32Ret;
    if (argc < 2)
    {
        Usage();
        return -1;
    }
    int count;
    for(count = 1; count < argc; count++)
    {
        if(!strcmp(argv[count], "-h"))
        {
            Usage();
            return 0;
        }
        else if(!strcmp(argv[count], "-s"))
        {
            s32Ret = SetSystemTime();
            if(0 == s32Ret)
            {
                printf("Set system datatime OK!\r\n");
                return 0;
            }
            else
            {
                return 0;
            }
        }
        else if(!strcmp(argv[count], "-g"))
        {
            getSystemTime();
        }

    }
    
    return 0;
}
Logo

更多推荐