Linux系统设置系统时间有两种方法:

1.使用命令date

2.使用系统调用settimeofday,gettimeofday

注意:不管使用上面哪一种方法都必须是root权限。

如果系统连接上了网络,设置的时间和网络时间不同,系统会自动使用网络中的时间。

1.使用命令date

在命令行中可以使用:

sudo date --s "2020-6-30 10:10:10"

2.使用系统调用settimeofday

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>
#include <unistd.h>static void time_set(int year,int month,int day,int hour,int min,int sec)
{struct tm tptr;struct timeval tv;tptr.tm_year = year - 1900;tptr.tm_mon = month - 1;tptr.tm_mday = day;tptr.tm_hour = hour;tptr.tm_min = min;tptr.tm_sec = sec;tv.tv_sec = mktime(&tptr);tv.tv_usec = 0;settimeofday(&tv, NULL);system(sudo hwclock -w);//将设置好的系统时间写入到rtc中
}

C语言settimeofday()函数:设置当前时间戳

头文件:

1

#include <sys/time.h>  #include <unistd.h>

定义函数:

1

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

函数说明:

settimeofday()会把目前时间设成由tv 所指的结构信息,当地时区信息则设成tz 所指的结构。详细的说明请参考gettimeofday()。

注意,在Linux下,只有root 权限才能使用此函数修改时间。

返回值:成功则返回0,失败返回-1,错误代码存于errno。

错误代码:

EPERM  并非由root 权限调用settimeofday(),权限不够。

EINVAL  时区或某个数据是不正确的,无法正确设置时间。

C语言gettimeofday()函数:获取当前时间

头文件:

1

#include <sys/time.h>  #include <unistd.h>

定义函数:int gettimeofday (struct timeval * tv, struct timezone * tz);

函数说明:gettimeofday()会把目前的时间有tv 所指的结构返回,当地时区的信息则放到tz 所指的结构中。

timeval 结构定义为:

1

2

3

4

struct timeval{

long tv_sec; //秒

long tv_usec; //微秒

};

timezone 结构定义为:

1

2

3

4

5

struct timezone

{

int tz_minuteswest; //和Greenwich 时间差了多少分钟

int tz_dsttime; //日光节约时间的状态

};

上述两个结构都定义在/usr/include/sys/time.h. tz_dsttime 所代表的状态如下

1

2

3

4

5

6

7

8

9

10

11

DST_NONE //不使用

DST_USA //美国

DST_AUST //澳洲

DST_WET //西欧

DST_MET //中欧

DST_EET //东欧

DST_CAN //加拿大

DST_GB //大不列颠

DST_RUM //罗马尼亚

DST_TUR //土耳其

DST_AUSTALT //澳洲(1986 年以后)

返回值:成功则返回0,失败返回-1,错误代码存于errno。

附加说明:EFAULT 指针tv 和tz 所指的内存空间超出存取权限。

linux系统设置系统时间的方法相关推荐

  1. 修改linux系统时间的方法(date命令)

    修改linux系统时间的方法(date命令) 来源:互联网 作者:佚名 时间:11-18 23:22:27 [大 中 小] date命令不仅可以显示系统当前时间,还可以用它来修改系统时间,下面简单的介 ...

  2. linux获得系统时间 c,linux c 获取系统时间的方法

    比如获取当前年份: /* 获取当前系统时间 暂时不使用 int iyear = 0; int sysyear = 0; time_t now; struct tm *timenow; time(&am ...

  3. Linux系统时间修改方法

    Linux系统时间修改方法 1. 第一种方式 1.将系统时间设定成下午5点55分55秒的命令命令 : "date -s 17:55:55"#date -s "12:12: ...

  4. linux锁定系统时间设置,设置linux系统时间的方法

    尝试了好多,都是因为权限问题失败,但是总结出了几种思路: 1 通过linux指令进行设置: date -s "20091112 18:30:50" &&hwcloc ...

  5. linux 脚本设置时间戳,修改linux系统时间的方法(date命令)

    命令格式为: date -s 时间字符串 例如只修改系统的日期,不修改时间(时分秒) date -s 2012-08-02 或只修改时间不修改日期 date -s 10:08:00 当然也可以同时修改 ...

  6. linux 修改系统时间和日期,Linux 修改系统日期和时间

    Linux 修改系统日期和时间 一.文本模式下修改 命令及参数选项:date -s 示例如下: #date -s 04/11/2008 ------将系统时间设定成2008年4月11日 #date - ...

  7. linux获取系统时间和时间戳

    linux获取系统时间和时间戳 linux下c/c++编程需要系统时间,一个是获取时间戳和计算时间差,一个获取当前时间用来作为文件名等,方法和例子如下: 可以用man命令查询time,localtim ...

  8. 笔记1:VC获取系统时间的方法

    笔记1:VC 获取系统时间的方法 推荐的获取方法 获取时间方法种类 各种获取时间方法详解 方法1:time_t变量 和 time(time_t*)方法 方法2:system(" time&q ...

  9. android系统应用程序设置时间,Android应用程序设置系统时间的方法

    Android应用程序获取系统时间的方法: System.currentTimeMillis(); Android SDK虽然提供了设置系统时间的方法SystemClock.setCurrentTim ...

最新文章

  1. 观察者模式定义了一种一对多的对象关系,当一个对象改变时,此对象对应的监控对象跟着改变!!!...
  2. 计算机仿真作业三,计算机仿真技术作业三.doc
  3. 最大公约数之和——极限版II
  4. C语言试题九十一之写一个程序,用公式π/4=1-1/3+1/5-1/7+...,求π的近似值,直到最后一项的绝对值小于10^-8为止。
  5. android 居右属性,使用layoutDirection属性设置布局靠左或靠右
  6. 《大数据》2020年第6期目次摘要
  7. linux服务器上文件编码格式转化shell
  8. MongoDB 教程五: MongoDB固定集合和性能优化 (索引Indexes, 优化器, 慢查询profile)
  9. Spring解析 XML 的原理,你搞定了么?
  10. Python程序员薪资 你不知道的事
  11. 李时珍食物疗法150条 百年难遇的养生千古名方
  12. 怎么将flv视频转换成mp4格式
  13. KUBERNETES安装及访问web页面
  14. 微信支付开发 服务商模式 签名错误
  15. 中国联通沃商店校园大使招募书
  16. Android日历控件
  17. Base64与bitmap之间相互转换
  18. 轰隆隆-小站地址原理整理分析
  19. 几款.Net加密/加壳工具的比较
  20. android 播放器sdk,Android端SDK的使用

热门文章

  1. 中国食用油市场供需调研与投资战略分析报告2022年版
  2. Keil 5中折叠代码
  3. 理财指南: 无论工资多少,记得至少要分成六份
  4. mix2s android9降级,升级安卓9.0后将无法降级,MIX2S降级后相机无法使用!
  5. 微博html5版赵丽颖,人红是非多,赵丽颖微博设置半年可见引热议,“劈叉梗”再被提起...
  6. 计算机网络采用什么标识主机,2-网络中计算机的标识----IP地址
  7. i3 10100F和i5 9400F哪个好 i310100f和i5 9400f性能差多少
  8. Outlook签名设置不完全指北
  9. mysql查看表结构和编码
  10. Oracle SQL语句性能优化方法大全