天天看點

Linux之修改時間

1、UTC就是0時區的時間,是國際标準,而中國處于UTC+8時區;CST是中國标準時間。

2、 linux系統時鐘有兩個,一個是硬體時鐘,即BIOS時間,就是我們進行CMOS設定時看到的時間,另一個是系統時鐘,是linux系統Kernel時間。當Linux啟動時,系統Kernel會去讀取硬體時鐘的設定,然後系統時鐘就會獨立于硬體運作。有時我們會發現系統時鐘和硬體時鐘不一緻,是以需要執行時間同步。

date
           

檢視系統時間;

date -s 06/18/14;
           

date指令将日期設定為2014年6月18日。

date -s 14:20:50;
           

将時間設定為14點20分50秒。

date 0618141614.30;
           

将時間設定為2014年6月18日14點16分30秒(MMDDhhmmYYYY.ss)。

3、硬體時鐘

hwclock  --show或者clock  --show
           

檢視系統硬體時鐘。

hwclock --set --date="06/18/14 14:55"
clock --set --date="06/18/14 14:55" 
           

設定硬體時間:(月/日/年時:分:秒)。

4、時鐘同步

硬體時鐘與系統時鐘同步:

hwclock --hctosys; 或者 clock --hctosys;
           

hc代表硬體時間,sys代表系統時間,即用硬體時鐘同步系統時鐘;

系統時鐘和硬體時鐘同步:

hwclock --systohc;或者 clock --systohc;
           

5、修改時區

(1)通過修改配置:

step1:修改

/etc/sysconfig/clock

中的

ZONE=Asia/Shanghai;UTC=false; ARC=false

step2:

rm /etc/localtime;

step3:連結到上海時區檔案:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime;
           

step4:執行完上述過程後,重新開機機器,即可看到時區已經更改。

6、永久修改系統時間

(1)date 檢視系統時間

(2)hwclock --show 檢視硬體的時間

(3)hwclock --set --date ‘2018-11-26 20:20:00’ 設定硬體時間為18年11月26日20點20分00秒;

(4)hwclock --hctosys 設定系統時間和硬體時間同步;

(5)clock -w 儲存時鐘;

7、時間域

  • %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等)

8、linux C++ 擷取目前時間,以标準時間“年-月-日 時:分:秒”的形式輸出,且秒後邊跟小數精确到毫秒

struct timeval tv;
char buf[64];
gettimeofday(&tv, NULL);
strftime(buf, sizeof(buf)-1, "%Y-%m-%d %H:%M:%S", localtime(&tv.tv_sec));
fprintf(stderr, "%s.%03d: ", buf, (int)(tv.tv_usec / 1000));
           

繼續閱讀