精华内容
下载资源
问答
  • Linux时间设置函数

    2012-05-09 22:27:00
    linuxTime.h 1 #ifndef LinuxTime_H 2 #define LinuxTime_H 3 #include <QtCore/QCoreApplication> 4 5 class LinuxTime 6 { 7 public: 8 void setTime(int m_nhour,int m_nminute,...

    linuxTime.h

     1 #ifndef  LinuxTime_H
     2 #define LinuxTime_H 
     3 #include <QtCore/QCoreApplication>
     4 
     5 class LinuxTime 
     6 {
     7 public:
     8     void setTime(int m_nhour,int m_nminute,int m_nsecond);
     9     void setDate(int m_nyear,int m_nmonth,int m_nday);
    10 
    11 private:
    12     int m_nyear;
    13     int m_nmonth;
    14     int m_nday;
    15     int m_nhour;
    16     int m_nminute;
    17     int m_nsecond;
    18 };
    19 
    20 #endif

    linuxTime.cpp

     1 #include "linuxTime.h"
     2 void LinuxTime::setTime(int m_nhour,int m_nminute,int m_nsecond)
     3 {
     4     QString strTime;
     5     strTime = QString("date -s %1:%2:%3") .arg(m_nhour).arg(m_nminute).arg(m_nsecond);
     6     system(strTime.toLatin1().data());
     7     system("clock -w");  
     8  
     9 }
    10 
    11 void LinuxTime::setDate(int m_nmonth,int m_nday,int m_nyear)
    12 {
    13     QString strDate;
    14     strDate = QString("date -s %1/%2/%3") .arg(m_nmonth).arg(m_nday).arg(m_nyear);
    15     system(strDate.toLatin1().data());
    16     system("clock -w");  
    17   //  system("find . -type f -exec touch {} \; ");
    18 }

    main.cpp

     1 #include <QtCore/QCoreApplication>
     2 #include <QTextStream>
     3 #include <QDate>
     4 #include <QTime>
     5 #include <QString>
     6 #include "linuxTime.h"
     7 int main(int argc,char *argv[])
     8 {
     9     QCoreApplication app(argc, argv);
    10     QTextStream out(stdout);
    11     if (argc < 6)
    12     {
    13         out<<"Usage : linuxTime_set setdate -s mm dd yy  or linuxTime_set settime -s hh mm ss"<<endl;
    14         exit(0); 
    15     }
    16     const char * date = "setdate";
    17     const char * time = "settime";
    18     const char * in_date =argv[1];
    19     
    20     if(QString::compare(date,in_date)==0)
    21    {
    22     bool ok;
    23     QString mm = argv[3];
    24     QString dd = argv[4];
    25     QString yy = argv[5];
    26     
    27     int in_nmm = mm.toInt(&ok, 10);
    28     int in_ndd = dd.toInt(&ok, 10);
    29     int in_nyy = yy.toInt(&ok, 10); 
    30 
    31     LinuxTime setdate;
    32     setdate.setDate(in_nmm,in_ndd,in_nyy);
    33     exit(0);
    34     }
    35 
    36     if(QString::compare(time,in_date)==0)
    37    {
    38         bool ok;
    39         QString hh = argv[3];
    40         QString mm = argv[4];
    41         QString ss = argv[5];
    42     
    43         int in_nhh = hh.toInt(&ok, 10);
    44         int in_nmm = mm.toInt(&ok, 10);
    45         int in_nss = ss.toInt(&ok, 10); 
    46 
    47         LinuxTime settime;
    48         settime.setTime(in_nhh,in_nmm,in_nss);
    49         exit(0);
    50     }
    51     return app.exec();
    52 }

    运行结果:

    转载于:https://www.cnblogs.com/fengye-dream/archive/2012/05/09/2493413.html

    展开全文
  • 标准C库中只有获取系统时间的API,好像还没有设置系统时间的API,本文将谈谈如何在linux平台设置系统时间,最后给出一个与平台无关的设置系统时间的封闭函数linux是如何管理时间的? 在系统启动时,Linux操作...

    标准C库中只有获取系统时间的API,好像还没有设置系统时间的API,本文将谈谈如何在linux平台设置系统时间,最后给出一个与平台无关的设置系统时间的封闭函数。

     

    linux是如何管理时间的?

    在系统启动时,Linux操作系统将时间从CMOS中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性,Linux每隔11分钟会将系统时间写入CMOS,同步时间。从这可以看出,获取系统时间有两个途径,一种是从CMOS中读,一种是从系统中读,但修改时间却只有一种,即修改linux系统中的时间,而修改CMOS中的时间是无效的,因为CMOS中的时间会被定时重写掉。另外还有一点要注意,修改了系统时间并不是马上生效的,假如你修改了系统时间并马上关机,再开机的时候,时间还是原来的,因为修改的时间还没有来得及写入CMOS中。

    Linux下设置系统时间:

    1.Linux下设置系统时间的函数有好几个,先来看看最常用的stime()函数,这个函数只能精确到秒。

    #define _SVID_SOURCE /*如果你使用的是glib2的话,必须先定义这个宏才能使用*/

    #include <time.h>

    int stime(time_t *t);

    参数说明:

    t是以秒为单位的时间值,从GMT1970年1月1日0时0分0秒开始计算。

    返回值:

    成功返回0,错误返回-1,errno错误码,EFAULT表示传递的参数错误,如时间值是无效的值,EPERM表示权限不够,注意只有root用户才有修改系统时间的权限。如果要让普通程序修改系统时间,可以先切换到root用户操作,修改完成后,再切换到普通用户,或者用命令chmod +s给执行文件加上root用户的权限。

    例子:

     

    int main(void)
    {
            long int t = 111111111;
    
            printf("设置系统时间前的时间是:");
            fflush(stdout);
            system("date");
    
            stime(&t);
    
            printf("设置系统时间后的时间是:");
            fflush(stdout);
            system("date");
    
            return 0;
    }
    <img alt="" data-cke-saved-src="https://img-blog.csdn.net/20180109215832136?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzM3MDY2NzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" src="https://img-blog.csdn.net/20180109215832136?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzM3MDY2NzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" style="margin-left:24px" />
    
    

     

     

    2.通过settimeofday()函数来设置系统时间,这个函数设置的精度可以精确到微秒。

    #include <time.h>

    int settimeofday(const struct timeval *tv , const struct timezone *tz);

    struct timeval {

        time_t      tv_sec;     /* seconds */

        suseconds_t tv_usec;    /* microseconds */

    };

    struct timezone {

        int tz_minuteswest;     /* minutes west of Greenwich */

        int tz_dsttime;         /* type of DST correction */

    };

    tz参数为时区,时区结构中tz_dsttime在linux中不支持,应该置为0,通常将参数tz设置为NULL,表示使用当前系统的时区。该函数是glib中的,但在mingw中没有实现。

    举例:

     

     1 #include <stdio.h>
      2 #include <sys/time.h>
      3 #include <unistd.h>
      4 
      5 int main(void)
      6 {
      7         struct timeval stime;
      8 
      9         gettimeofday(&stime,NULL);
     10         printf("现在的时间秒数是:%ld,毫秒数是:%ld\n现在的时间是:",stime.tv_sec,stime.tv_usec);
     11         fflush(stdout);
     12         system("date");
     13 
     14         stime.tv_sec = 123456789;
     15         settimeofday(&stime,NULL);
     16         printf("现在的时间秒数是:%ld,毫秒数是:%ld\n现在的时间是:",stime.tv_sec,stime.tv_usec);
     17         fflush(stdout);
     18         system("date");
     19 
     20 
     21 
     22         return 0;
     23 }
    


    结果:

     

    3.设置CMOS时间,其实它是通过RTC(Real-time clock)设备驱动来完成的,你可以用ioctl()函数来设置时间,当然也可以通过操作/dev/rtc设备文件,在此就不详细说明了。

     

    二、一个封装的设置系统时间的函数

    //设置成功返回true,否则返回false

           bool set_local_time(struct tm& t)

    {

    #ifdef _WIN32

           SYSTEMTIME st;

           memset(&st, 0, sizeof(SYSTEMTIME));

           st.wYear = t.tm_year + 1970; //注意struct tm结构中的年是从1970年开始的计数

           st.wMonth = t.tm_mon + 1; //注意struct tm结构中的月份是从0开始的

           st.wDay = t.tm_mday;

           st.wHour = t.tm_hour;

           st.wMinute = t.tm_min;

           st.wSecond = t.tm_sec;

           if(!SetLocalTime(&st))

                  return true;

                  else

                         return false;

           #else

                  //将struct tm结构时间转换成GMT时间time_t

                  struct time_t st;

                  st = mktime(&t);

                  if(st==-1)

                         return false;

                  if(!stime(st))

                         return true;

                  else

                         return false;

    #endif

    }

     
     

     

     

     

    展开全文
  • linux 通过系统函数设置系统时间

    千次阅读 2019-05-23 11:38:07
    我们都熟悉用date来设置系统时间,下面我来介绍下通过系统函数设置系统时间 #include <stdio.h> #include<sys/time.h> #include<unistd.h> #include <time.h> int SetSystemTime(char...

    我们都熟悉用date来设置系统时间,下面我来介绍下通过系统函数设置系统时间

     

    #include <stdio.h>
    #include<sys/time.h>
    #include<unistd.h>
    #include <time.h>
    
    
    int SetSystemTime(char *dt)
    {
        struct tm rtc_time;
        struct tm _tm;
        struct timeval tv;
        time_t timep;
        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;
    }
    
    
    int main()
    {
      SetSystemTime("2006-4-20 20:30:30");
    
      return 0;
    }

     

    展开全文
  • 本篇文章是对Linux下的时间函数:设置以及获取时间的方法进行了详细的分析介绍,需要的朋友参考下
  • linux c获得时间和设置时间 函数

    千次阅读 2018-04-11 11:04:41
    设置操作系统时间 参数:*dt数据格式为"2006-4-20 20:30:30" 调用方法:  char *pt="2006-4-20 20:30:30";  SetSystemTime(pt); **************************************************/ int SetSystemTime(void...
    #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;
    }
    展开全文
  • linuxc时间函数

    2016-01-11 16:16:07
    linuxc时间函数 函数分类 1. 设置时间:settimeofday(), tzset() 2. 获取时间:time(), ftime(), gettimeofday() 3. 时间格式转换:mktime(), strtime(), gmtime(), localtime(), asctime(), ctime() 4. 其他:...
  • Linux C时间函数的总结

    2019-05-07 11:12:51
    Linux C时间函数的总结 时间函数 函数分类: 设置时间: settimeofday(2), tzset(3) 获取时间: time(2), ftime(3), gettimeofday(2) 时间格式转换: mktime(3), strftime(3); gmtime(3), localtime(3); asctime...
  • main.cpp #include "settime.h" #include <QtCore/QCoreApplication> #include <QString> #include <sys/time.h> #include <unistd.h> #include <...int gettimeofda...
  • 常用时间函数如下: time_t time(time_t *t); char *asctime(const struct tm *tm); char *asctime_r(const struct tm *tm, char *buf); char *ctime(const time_t *timep); char *ctime_r(const time_t *timep, ...
  • linux时间函数总结

    千次阅读 2015-11-21 17:27:44
    linux下常用的时间函数: 读取时间函数:gettimeofday,time,ftime 时间格式转换函数:ctime/ctime_r,localtime/localtime_r, asctime/asctime_r,strftime/strptime,gmtime/gmtime...设置时间函数:settimeofday,stime
  • Linux下的时间函数设置及获取时间

    千次阅读 多人点赞 2012-12-19 17:04:27
    一、时间函数  time_t time(time_t *t);   char *asctime(const struct tm *tm);   char *asctime_r(const struct tm *tm, char *buf);   char *ctime(const time_t *timep);   ch
  • Linux时间相关函数

    2014-12-29 15:21:00
    相关文件: /etc/localtime 本地时间二级制文件 /etc/sysconfig/clock 时区配置文件 /usr/share/zoneinfo 存储各个时区的二进制文件 ...1、通过tzselect设置时区 2、rm /erc/localtime 3、l...
  • linux C函数之时间函数

    千次阅读 2013-11-30 09:51:02
    时间函数 函数分类: 1. 设置时间: settimeofday, tzset 2. 获取时间: time, ftime, gettimeofday 3. 时间格式转换: mktime, strftime; gmtime, localtime; asctime, ctime 4. 其他: clock, difftime 1. ...
  • Linux C函数之时间函数

    2013-08-19 17:32:44
    From: ... 时间函数(13) 函数分类: 1. 设置时间: settimeofday, tzset 2. 获取时间: time, ftime, gettimeofday 3. 时间格式转换: mktime, strfti
  • Linux命令:时间函数

    2019-09-11 15:33:57
    linux时间函数 date date命令**是显示或设置系统时间与日期。 很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式...
  • Linux中connect函数有两种情况: 1、如果是连接本机的IP地址,connect函数是不阻塞的,连接成功就返回0,connect连接失败就返回-1. 2、如果是连接外部设备,connect函数默认是阻塞的,将connect函数设为不阻塞有这样...
  • 首先,看下几个设置时间和时区的命令:查看当前时区 date -R,查看格林时间 date -u修改设置时区 tzselect复制相应的时区文件,替换系统时区文件;或者创建链接文件cp /usr/share/zoneinfo/Asia/Shanghai /etc/...
  • #include #include #include #include /* ARGSUSED */ static void catch_sigalrm(int sig){ printf("%s\n", "SIGALRM received.");...static void (*Signal (int sig, void (*ha
  • Linux C 时间函数clock_gettime()的使用

    千次阅读 2019-05-09 17:24:00
    函数: int clock_gettime...CLOCK_REALTIME: 系统实时时间,从Epoch计时,可被设置更改。 CLOCK_MONOTONIC: 系统运行时间,从系统启动时开始计时,系统休眠时不再计时(NTP与硬件时钟有问题时会影响其频率,没有...
  • 函数: int clock_gettime...CLOCK_REALTIME: 系统实时时间,从Epoch计时,可被设置更改。 CLOCK_MONOTONIC: 系统运行时间,从系统启动时开始计时,系统休眠时不再计时(NTP与硬件时钟有问题时会影响其频率,没...
  • Linux设置系统时间

    2019-12-24 01:01:12
    1、系统时间与硬件时间 在Linux中有硬件时钟与系统时钟两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。...2、date设置时间 da...
  • Linux/Mac 下为Python函数添加超时时间收录于话题#你不知道的 Python71个摄影:产品经理产品经理亲自下厨我们在使用 requests 这类网络请求第三方库时,可以看到它有一个参数叫做timeout,就是指在网络请求发出...
  • Linux下系统函数

    千次阅读 2018-12-05 16:42:16
    Linux下系统函数 rand()函数 获取02147483647(0RAND_MAX)之间的随机数。真随机需要srand()设置种子。一般用时间作为srand()的参数 #include&amp;lt;unistd.h&amp;gt; int rand(void) void srand(unsigned ...
  • linux C 之时间函数

    2011-07-14 11:44:28
    函数分类:1. 设置时间: settimeofday, tzset2. 获取时间: time, ftime, gettimeofday3. 时间格式转换: mktime, strftime; gmtime, localtime; asctime, ctime4. 其他: cloc

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 950
精华内容 380
关键字:

linux设置时间函数

linux 订阅