A. linux中如何查看修改系统的时间和时区
一、查看和修改Linux的时区
1. 查看当前时区
命令 : "date -R"
2. 修改设置Linux服务器时区
方法 A
命令 : "tzselect"
方法 B 仅限于RedHat Linux 和 CentOS
命令 : "timeconfig"
方法 C 适用于Debian
命令 : "dpkg-reconfigure tzdata"
3. 复制相应的时区文件,替换系统时区文件;或者创建链接文件
cp /usr/share/zoneinfo/主时区/主时区/次时区 /etc/localtime
例如:在设置中国时区使用亚洲/上海(+8)
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
二、查看和修改Linux的时间
1. 查看时间和日期
命令 : "date"
2.设置时间和日期
例如:将系统日期设定成2009年11月3日的命令
命令 : "date -s 11/03/2009"
将系统时间设定成下午5点55分55秒的命令
命令 : "date -s 17:55:55"
3. 将当前时间和日期写入BIOS,避免重启后失效
命令 : "hwclock -w"
注:
date
不加参数可以直接看到当前日期时间
cal
不加参数可以直接看到本月月历 命令使用可查看“Linux命令大全”
B. 用linux C实现当前系统时间后移24小时以后的时间(14位,精确到秒)
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t tnow;
struct tm *tmnow = NULL;
struct tm *tm24h = NULL;
time(&tnow);
tmnow = localtime(&tnow);//当前时间
fprintf(stderr,"当前时间为:%d年%02d月%02d日,%02d时%02d分%02d秒\n",
tmnow->tm_year+1900,tmnow->tm_mon,tmnow->tm_mday,
tmnow->tm_hour,tmnow->tm_min,tmnow->tm_sec);
tnow += 24*60*60;
tm24h = localtime(&tnow);
fprintf(stderr,"24H后时间为:%d年%02d月%02d日,%02d时%02d分%02d秒\n",
tm24h->tm_year+1900,tm24h->tm_mon,tm24h->tm_mday,
tm24h->tm_hour,tm24h->tm_min,tm24h->tm_sec);
return 0;
}
C. Linux下C语言获得系统时间的方法
没有完整程序, 不过能提供一点资料
int gettimeofday(struct timeval * tv,struct timezone *tz);
这个函数可以获取当前时间, 貌似只要第一个结构体就行了
struct timeval
{
time_t tv_sec; //秒 [long int]
suseconds_t tv_usec; //微秒 [long int], (10E-6 second)
};
struct timeval
{
long tv_sec;
long tv_usec;
};
然后取微秒的前三位就是小数了, 之后把秒 tv_sec 转化为 tm 格式, 参数用秒的指针就行
struct tm * gmtime(const time_t * t);
//转换成格林威治时间。有时称为GMT或UTC。
struct tm * localtime(const time_t *t);
//转换成本地时间。它可以透过修改TZ环境变数来在一台机器中,不同使用者表示不同时间.
下面是tm的部分参数
int tm_sec; //tm_sec表“秒”数,在[0,61]之间,多出来的两秒是用来处理跳秒问题用的。/* Seconds: 0-59 (K&R says 0-61?) */
int tm_min; //tm_min表“分”数,在[0,59]之间。
int tm_hour; //tm_hour表“时”数,在[0,23]之间。
int tm_mday; //tm_mday表“本月第几日”,在[1,31]之间。
int tm_mon; //tm_mon表“本年第几月”,在[0,11]之间。
int tm_year; //tm_year要加1900表示那一年。 /* /* 年份,其值从1900开始 */*/
int tm_wday; //tm_wday表“本周第几日”,在[0,6]之间。 /* Days since Sunday (0-6) */ /*其中0代表星期天,1代表星期一,以此类推 */
int tm_yday; //tm_yday表“本年第几日”,在[0,365]之间,闰年有366日。 /*其中0代表1月1日,1代表1月2日,以此类推 */*/
int tm_isdst; //tm_isdst表是否为“日光节约时间”
------------------------------华丽丽的分割线--------------------------------------------------
由于很长时间没编程了, 也没有Linux环境, 我就简单写几行代码, 仅作参考
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include<unistd.h>
//这四个不一定够用了
struct timeval tv;
struct timezone tz;
struct tm * p_tm;
//变量没有初始化习惯不好,不要学
gettimeofday(&tv, &tz);
p_tm = gmtime( (const time_t *)&tv.tv_sec );
字符串的组装尤其格式问题自己解决吧
年 p_tm->tm_year+ 1900
月 p_tm->tm_mon+ 1
日 p_tm->tm_mday
时 p_tm->tm_hour+ 1
分 p_tm->tm_min+ 1
秒 p_tm->tm_sec+ 1
小数点后面的部分,注意不够三位还是前面填充0 tv.tv_sec/1000
D. linux怎么通过date修改日期
Linux使用date指令修改系统时间和日期,无需重启,保存即生效。 date命令的功能是显示和设置系统日期和时间。 输入date 查看目前系统时间。 修改时间需要 date -选项 修改内容。 命令中各选项的含义分别为: -d datestr, --date datestr 显示由datestr描述的日期 -s datestr, --set datestr 设置datestr 描述的日期 -u, --universal 显示或设置通用时间 时间域的表达式: %H 小时(00..23) %I 小时(01..12) %k 小时(0..23) %l 小时(1..12) %M 分(00..59) %p 显示出AM或PM %r 时间(hh:mm:ss AM或PM),12小时 %s 从1970年1月1日00:00:00到目前经历的秒数 %S 秒(00..59) %T 时间(24小时制)(hh:mm:ss) %X 显示时间的格式(%H:%M:%S) %Z 时区 日期域 %a 星期几的简称( Sun..Sat) %A 星期几的全称( Sunday..Saturday) %b 月的简称(Jan..Dec) %B 月的全称(January..December) %c 日期和时间( Mon Nov 8 14:12:46 CST 1999) %d 一个月的第几天(01..31) %D 日期(mm/dd/yy) %h 和%b选项相同 %j 一年的第几天(001..366) %m 月(01..12) %w 一个星期的第几天(0代表星期天) %W 一年的第几个星期(00..53,星期一为第一天) %x 显示日期的格式(mm/dd/yy) %y 年的最后两个数字( 1999则是99) %Y 年(例如:1970,1996等) 需要特别说明的是,只有超级用户才能用date命令设置时间,一般用户只能用date命令显示时间。 例1:用指定的格式显示时间。 $ date '+This date now is =>%x ,time is now =>%X ,thank you !' This date now is =>11/12/99 ,time is now =>17:53:01,thank you ! 例2:用预定的格式显示当前的时间。 # date Fri Nov 26 15:20:18 CST 1999 例3:设置时间为下午14点36分。 # date -s 14:36:00 Fri Nov 26 14:15:00 CST 1999 例4:设置时间为1999年11月28号。 # date -s 991128 Sun Nov 28 00:00:00 CST 1999 实例:设置时间伟2008年8月8号12:00 # date -s "2008-08-08 12:00:00" 修改完后,记得执行clock -w,把系统时间写入CMOS