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