linux獲取時間
Ⅰ linux中獲取時間的幾種方法
1,手動設置
2,utc
3,ntp自動或手動
Ⅱ linux 取當前時間前2小時時間
換成時間戳,然後減兩個小時的秒數,換算成有好格式及OK了!
Ⅲ 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
Ⅳ linux實時時間 xtime怎麼獲取並使用
RTC時間操作:
1.rtc時間是由rtc硬體控制的,所以在linux中想要修改和獲取rtc時間就只能通過驅動的介面來獲取和修改。
intrtc_test(void)
{
structrtc_timertc;
intfd=-1;
intret=-1;
fd=open("/dev/rtc0",O_RDWR);
if(fd<0){
return-1;
}
ret=ioctl(fd,RTC_RD_TIME,&rtc);
if(ret<0){
return-1;
}
printf(" CurrentRTCdata/timeis%d-%d-%d,%02d:%02d:%02d. ",rtc.tm_mday,rtc.tm_mon+1,
rtc.tm_year+1900,rtc.tm_hour,rtc.tm_min,rtc.tm_sec);
ret=ioctl(fd,RTC_SET_TIME,&rtc);
if(ret<0){
return-1;
}
return0;
}
2.除了上面這種方式操作rtc時間以外,linux中也有一個命令可以簡化rtc時間操作,hwclock,比如,可以通過system("hwclock-w");系統調用來把xtime設置到rtc硬體。
牆上時間(realtime、xtime):
linux系統中主要使用的就是xtime,它是系統運行的基礎,很多程序都是依賴於xtime來運行的,接下來將介紹將如何操作xtime。
1.獲取、設置微秒級別的時間:
#include
#include
structtimeval
{
inttv_sec;
inttv_usec;
};
intgettimeofday(structtimeval*tv,structtimezone*tz);
intsettimeofday(conststructtimeval*tv,conststructtimezone*gz);
功能描述:
gettimeofday()獲取當前時間,有tv指向的結構體返回。
settimeofday()把當前時間設成由tv指向的結構體數據。當前地區信息則設成tz指向的結構體數據。
2.獲取秒級別的時間
typedeflongtime_t;
time_ttime(time_t*t);
如果t是non-null,它將會把時間值填入t中
3.內核2.6版本後新增的clockapi介面
獲取納秒級別的時間
structtimespec{
time_ttv_sec;/*秒s*/
longtv_nsec;/*納秒ns*/
};
intclock_getres(clockid_tclk_id,structtimespec*res);
intclock_gettime(clockid_tclk_id,structtimespec*tp);
intclock_settime(clockid_tclk_id、conststructtimespec*tp);
編譯連接時採用-lrt才能編譯通過。
clk_id可選參數:
CLOCK_REALTIME
系統全局的實時時鍾.設置此時鍾需要合適的許可權.
CLOCK_MONOTONIC
只能被讀取,無法被設置,表示monotonic時間起點.
CLOCK_PROCESS_CPUTIME_ID
從cpu每進程的高解析度計時器.
CLOCK_THREAD_CPUTIME_ID
線程的特定cpu時間時鍾.
系統啟動時,會首先從rtc中讀取rtc時間,並設置給xtime,而當ntp對系統時間進行更新時,首先設置xtime,然後調用hwclock設置到rtc硬體中。xtime根據需要的精度,可以通過上面幾個介面來選擇使用。
Ⅳ linux 獲取命令執行結果時間
執行命令後,執行date,類似於這種,ls ; date,如果是腳本可以把data保存為一個變數,通過echo $變數名 列印出來
Ⅵ linux獲取當前時間的命令
題主你好,
linux下使用 date 命令獲取日期和時間.
說明: 單獨使用date命令顯示的比較全, 年月日時分秒,星期幾都會顯示出來.如果只需要顯示某一維度或某幾個維度的值,可能加參數實現. 如果題主想知道請追問.
希望可以幫到題主, 歡迎追問.
Ⅶ linux內核獲取時間問題
1 tv_usec是微秒,變小是因為秒進位了,你要同時把秒輸出就能看出來了
2 有個常量HZ 它和jiffies是互為倒數. 以前一直是100, 也就是1秒100下,就是1個j=10毫秒
如今也有更快的,比如1000.但是在用戶空間,一直是100.
所以jiffies非常快,會容易溢出, 例如一個無符號整形存儲秒,那麼69年左右會溢出
毫秒的話要除1000, 不到一個月就溢出了.而電腦的運行時間是完全可以達到這么久不重啟的.
jiffies_64就不用擔心這個問題了.
3可參加linux/time.h中提供的api,精確到微秒
Ⅷ linux中,怎麼通過shell語句獲取當前日期,輸出格式要求20111224.
在Linux下,可以通過date語句來獲取當前日期:
輸入:date +%Y%m%d
輸出:20190314
命令實際執行情況如下圖:
(8)linux獲取時間擴展閱讀
GNU 對 date 命令的另一個擴展是 -d 選項,使用這個功能強大的選項,您可以完成很多有意義的工作。
1、快速地查明一個特定的日期究竟是星期幾:
輸入:date -d "nov 22"
輸出:2019年 11月 22日 星期五 00:00:00 CST
在本示例中,您可以看到今年(2019年)的 11 月 22 日是星期五。
2、獲得相對日期
-d 選項還可以告訴您,相對於當前日期之前或者以後的日期。
如,您需要了解兩星期以後的日期,那麼:
輸入: date -d "2 weeks"
輸出:2019年 03月 29日 星期五 00:12:24 CST
3、使用 next/last指令,您可以得到以後的星期幾是哪一天:
輸入: date -d "next monday" (下周一的日期)
輸入: date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d
輸入: date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d
輸入: date -d last-month +%Y%m(上個月是幾月)
輸入: date -d next-month +%Y%m(下個月是幾月)
4、使用 ago 指令,您可以得到過去的日期:
輸入: date -d "30 days ago" (30天前的日期)
5、您可以使用負數以得到相反的日期:
輸入: date -d "dec 14 -2 weeks" (相對:dec 14這個日期的兩周前的日期)
輸入: date -d "-100 days" (100天以前的日期)
輸入: date -d "50 days" (50天後的日期)
Ⅸ linux c++ 如何獲取 系統時間
用cstlib函數time,比如
#include <iostream>
#include <cstlib>
using namespace std;
int main()
{
int t, h, m, s;
t = time( 0 );
t = t % 86400;
s = t % 60;
t = ( t - s ) / 60;
m = t % 60;
t = ( t - m ) / 60;
h = t;
cout << "現在是" << h << ":" << m << ":" << s << endl;
return 0;
}
即可顯示
Ⅹ linux下獲取系統時間的方法有哪些
date 命令查看系統當前時間
uptime 命令列出當前系統時間,運行天數,和負載情況