linuxc取系統時間
沒有完整程序, 不過能提供一點資料
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
2. 在LINUX下用C++編程,如何獲取系統當前的時間。
//方案— 優點:僅使用C標准庫;缺點:只能精確到秒級
#include <time.h>
#include <stdio.h>
int main( void )
{
time_t t = time(0);
char tmp[64];
strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );
puts( tmp );
return 0;
}
size_t strftime(char *strDest, size_t maxsize, const char *format, const struct tm *timeptr);
根據格式字元串生成字元串。
struct tm *localtime(const time_t *timer);
取得當地時間,localtime獲取的結果由結構tm返回
返回的字元串可以依下列的格式而定:
%a 星期幾的縮寫。Eg:Tue
%A 星期幾的全名。 Eg: Tuesday
%b 月份名稱的縮寫。
%B 月份名稱的全名。
%c 本地端日期時間較佳表示字元串。
%d 用數字表示本月的第幾天 (范圍為 00 至 31)。日期
%H 用 24 小時制數字表示小時數 (范圍為 00 至 23)。
%I 用 12 小時制數字表示小時數 (范圍為 01 至 12)。
%j 以數字表示當年度的第幾天 (范圍為 001 至 366)。
%m 月份的數字 (范圍由 1 至 12)。
%M 分鍾。
%p 以 ''AM'' 或 ''PM'' 表示本地端時間。
%S 秒數。
%U 數字表示為本年度的第幾周,第一個星期由第一個周日開始。
%W 數字表示為本年度的第幾周,第一個星期由第一個周一開始。
%w 用數字表示本周的第幾天 ( 0 為周日)。
%x 不含時間的日期表示法。
%X 不含日期的時間表示法。 Eg: 15:26:30
%y 二位數字表示年份 (范圍由 00 至 99)。
%Y 完整的年份數字表示,即四位數。 Eg:2008
%Z(%z) 時區或名稱縮寫。Eg:中國標准時間
%% % 字元。
//方案二 優點:能精確到毫秒級;缺點:使用了windows API
#include <windows.h>
#include <stdio.h>
int main( void )
{
SYSTEMTIME sys;
GetLocalTime( &sys );
printf( "%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1d\n",sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute, sys.wSecond,sys.wMilliseconds,sys.wDayOfWeek);
return 0;
}
//方案三,優點:利用系統函數,還能修改系統時間
//此文件必須是c++文件
#include<stdlib.h>
#include<iostream>
using namespace std;
void main()
{
system("time");
}
//方案四,將當前時間折算為秒級,再通過相應的時間換算即可
//此文件必須是c++文件
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
time_t now_time;
now_time = time(NULL);
cout<<now_time;
return 0;
}
3. 用c語言如何獲取系統當前時間的函數
1、C語言中讀取系統時間的函數為time(),其函數原型為:
#include <time.h>
time_t time( time_t * ) ;
time_t就是long,函數返回從1970年1月1日(MFC是1899年12月31日)0時0分0秒,到現在的的秒數。
2、C語言還提供了將秒數轉換成相應的時間格式的函數:
char * ctime(const time_t *timer); //將日歷時間轉換成本地時間,返回轉換後的字元串指針 可定義字元串或是字元指針來接收返回值
struct tm * gmtime(const time_t *timer); //將日歷時間轉化為世界標准時間(即格林尼治時間),返回結構體指針 可定義struct tm *變數來接收結果
struct tm * localtime(const time_t * timer); //將日歷時間轉化為本地時間,返回結構體指針 可定義struct tm *變數來接收結果
3、常式:
#include <time.h>
void main()
{
time_t t;
struct tm *pt ;
char *pc ;
time(&t);
pc=ctime(&t) ; printf("ctime:%s", pc );
pt=localtime(&t) ; printf("year=%d", pt->tm_year+1900 );
}
時間結構體struct tm 說明:
struct tm {
int tm_sec; /* 秒 – 取值區間為[0,59] */
int tm_min; /* 分 - 取值區間為[0,59] */
int tm_hour; /* 時 - 取值區間為[0,23] */
int tm_mday; /* 一個月中的日期 - 取值區間為[1,31] */
int tm_mon; /* 月份(從一月開始,0代表一月) - 取值區間為[0,11] */
int tm_year; /* 年份,其值等於實際年份減去1900 */
int tm_wday; /* 星期 – 取值區間為[0,6],其中0代表星期天,1代表星期一,以此類推 */
int tm_yday; /* 從每年的1月1日開始的天數 – 取值區間為[0,365],其中0代表1月1日,1代表1月2日,以此類推 */
int tm_isdst; /* 夏令時標識符,實行夏令時的時候,tm_isdst為正。不實行夏令時的進候,tm_isdst為0;不了解情況時,tm_isdst()為負。*/
};
4. c程序如何通過參數獲得linux系統啟動時間
試試clock_gettime:
struct timespec t;
clock_gettime(CLOCK_MONOTONIC, &t);
clock_gettime(CLOCK_BOOTTIME, &t);
CLOCK_MONOTONIC 和 CLOCK_BOOTTIME略有不同,詳情查看man clock_gettime.
5. c語言如何取得系統時間
#include "time.h"
time_t time(time_t *timer);
調用後將當前系統時間與1900年1月1日相差的秒數存入到timer中,timer可看成是一個長整型數
struct tm* localtime(const time_t *timer)
將time()函數調用的結果做為參數傳入到localtime()函數中就能得到當前時間和日期,注意得到的年是和1970的差值,月份是和1月的差值
struct tm是一個結構體,定義如下
struct tm
{
int tm_sec; //當前秒
int tm_min; //當前分鍾
int tm_hour; //當前小時
int tm_mday; //當前在本月中的天,如11月1日,則為1
int tm_mon; //當前月,范圍是0~11
int tm_year; //當前年和1900的差值,如2006年則為36
int tm_wday; //當前在本星期中的天,范圍0~6
int tm_yday; //當前在本年中的天,范圍0~365
int tm_isdst; //這個我也不清楚
}
求當前時間的示例
int getSystemTime()
{
time_t timer;
struct tm* t_tm;
time(&timer);
t_tm = localtime(&timer);
printf("today is %4d%02d%02d%02d%02d%02d\n", t_tm.tm_year+1900,
t_tm.tm_mon+1, t_tm.tm_mday, t_tm.tm_hour, t_tm.tm_min, t_tm.tm_sec);
return 0;
}
其他時間的函數和結構還有:
timeval結構
#include <include/linux/time.h>
struct timeval
{
time_t tv_sec;
susecond_t tv_usec; //當前妙內的微妙數
};
tms結構
保存著一個進程及其子進程使用的cpu時間
struct tms
{
clock_t tms_utime;
clock_t tms_stime;
clock_t tms_cutime;
clock_t tms_cstime;
}
timer_struct結構
#include <include/linux/timer.h>
struct timer_struct
{
unsigned long expires; //定時器被激活的時刻
void (*fn)(void); //定時器激活後的處理函數
}
utime函數
更改文件的存取和修改時間
int utime(const char pathname, const struct utimbuf *times) // return value 0 or -1
times 為空指針,存取和修改時間設置為當前時間
struct utimbuf
{
time_t actime;
time_t modtime;
}
6. linux如何設置伺服器上的系統時間
date -s 「20181121 17:34:00」
輸入這條命令系統時間會設置為2018年11月21日17點39分。
修改之後你可以輸入date命令查詢當前時間。
(6)linuxc取系統時間擴展閱讀:
1、桌面右上角齒輪按鈕,點擊System Settings。

7. linux下C語言怎麼獲取文件創建時間
在 Windows 下,一個文件有創建時間、修改時間、訪問時間。而在 Linux 下,一個文件也有三種時間,分別是訪問時間(Access)、修改時間(Modify)、狀態改變時間(Change)。
可以使用 stat 命令查看文件的訪問時間、修改時間和狀態改變時間。

本人使用的機器的磁碟分區使用的文件系統類型是 ext3,也就是說本人是無法查看文件創建時間的。但是,如果文件創建後就沒有修改過,修改時間=創建時間;如果文件創建後,狀態就沒有改變過,那麼狀態改變時間=創建時間;如果文件創建後,沒有被讀取過,那麼訪問時間=創建時間,當這個基本不太可能。
那什麼時候訪問時間,修改時間和狀態改變時間會變化呢?比如我們使用vi打開文件但不編輯,那麼退出後文件的訪問時間就會改變;比如我們使用vi打開文件並且編輯後保存退出,那麼文件的修改時間就會改變,當然訪問時間也改變了;再比如使用chmod +x給文件增加可執行的屬性,那麼文件的狀態改變時間就會改變。
【答題不易,請採納謝謝】
