1. linux下,和時間相關的幾個函數
struct tm { int tm_sec; /* Seconds (0-60) */ int tm_min; /* Minutes (0-59) */ int tm_hour; /* Hours (0-23) */ int tm_mday; /* Day of the month (1-31) */ int tm_mon; /* Month (0-11) */ int tm_year; /* Year - 1900 */ int tm_wday; /* Day of the week (0-6, Sunday = 0) */ int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */ int tm_isdst; /* Daylight saving time */ };
這就裡面的參數已經很詳盡也很簡單了
所以不需要你再去做其它的事情,只要填充這個結構就可以了
當然如果你非要用以上概述的方法來完成任務的其實也很簡單
只需要將以上的內容填充到這個結構體然後再調用mktime函數就可以了
下面我給個簡單的實現可以參考下,然後根據自己的實際情況再做些修改
void settime(unsigned char *buf,int buf_len){ struct tm t; int year=0; memset(&t,0,sizeof(t)); memcpy(&year,buf,2); //前兩個位元組為年份 year-=1900; //struct sm結構中年份是以1900年開始計算的 t.tm_year=year; t.tm_mon=(int)buf[2]-1; t.tm_mday=(int)buf[3]; t.tm_hour=(int)buf[4]; t.tm_min=(int)buf[5]; t.tm_sec=(int)buf[6]; if(mktime(&t) == -1) //設置時間 perror("mktime");}
2. linux sh腳本取前一個月的日期
1、date +%w
%w day of week (0..6); 0 is Sunday
2、如果星期2-6,上一個工作日肯定就是
t1=`date -d yesterday`
或者
t2=`date -d -1day`
3、如果星期天,上一個工作日肯定就是
t3=`date -d -2day`
4、如果星期1,上一個工作日肯定就是
t4=`date -d -3day`
3. linux中文件夾的創建日期是怎麼計算的
是根據你的系統時間 在創建文件夾時會記錄創建的時間
4. linux C 獲取時間以及計算時間差
可以用time()系統調用來獲取系統時間,然後減去之前記錄的時間就得到了時間差
5. 用linux 日期加天數輸出
#!/bin/bash
echo "please input your date:"
read a
echo "please input a num of the day you want to plus:"
read b
date -d "$a + $b days " +%Y%m%d
記得把腳本的許可權打開,然後執行他,第一次你輸入一個日期,第二次輸入一個你想要加的天數,然後就能得出結果了。
6. linux 內的時間是從什麼時候開始計算
如果你是說那一長串數字的話,那個稱為UNIX時間
是從1970年1月1時0時0分起至當前的總秒數,1970年被稱為是Unix元年
7. 在linux中怎樣知道某年某月某日是星期幾
date命令
date命令用於顯示及設置系統的時間或日期,格式為「date [選項] [+指定的格式]」。
還有就是:在Linux中,可以在終端中直接通過輸入命令
cal來調用Linux自帶的日歷功能,你可以通過萬年歷查看 如果你是運維的話可以看看Linux 這個可以試試。建議看看《Linux就該這么學》 裡面有個專欄是 Linux命令大全(手冊) 加入我們的群
8. 在Linux下, 用C如何設置日期
1.時間表示
在程序當中,我們經常要輸出系統當前的時間,比如我們使用date命令的輸出結果.這個時候我們可以使用下面兩個函數:
#include
time_t time(time_t *tloc);
char *ctime(const time_t *clock);
time函數返回從1970年1月1日0點以來的秒數.存儲在time_t結構之中.不過這個函數的返回值對於我們來說沒有什麼實際意義.這個時候我們使用第二個函數將秒數轉化為字元串. 這個函數的返回類型是固定的:一個可能值為.Thu Dec7 14:58:59 2000 這個字元串的長度是固定的為26.
2.時間的測量
有時候我們要計算程序執行的時間.比如我們要對演算法進行時間分析.這個時候可以使用下面這個函數. #include int gettimeofday(struct timeval *tv,struct timezone *tz); strut timeval { long tv_sec; /* 秒數 */ long tv_usec; /* 微秒數 */ }; gettimeofday將時間保存在結構tv之中.tz一般我們使用NULL來代替. #include #include #include void function() { unsigned int i,j; double y; for(i=0;i<1000;i++) for(j=0;j<1000;j++) y=sin((double)i); } main() { struct timeval tpstart,tpend; float timeuse; gettimeofday(&tpstart,NULL); function(); gettimeofday(&tpend,NULL); timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+ tpend.tv_usec-tpstart.tv_usec; timeuse/=1000000; printf("Used Time:%f\n",timeuse); exit(0); }
這個程序輸出函數的執行時間,我們可以使用這個來進行系統性能的測試,或者是函數演算法的效率分析.在我機器上的一個輸出結果是: Used Time:0.556070
9. linux中用shell時奇怪的字元串拼接和時間計算問題
testt=$(date +%Y-%m-%d)
date2="14/08/12"
test=20
testtt="${test}${date2}"
time1=$(date +%s -d "$testt" )
time2=$(date +%s -d "$testtt" )
time=$(($time1-$time2))
echo $time
改成引號,去掉括弧!!
10. linux中,怎麼通過shell語句獲取當前日期,輸出格式要求20111224.
在Linux下,可以通過date語句來獲取當前日期:
輸入:date +%Y%m%d
輸出:20190314
命令實際執行情況如下圖:
(10)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天後的日期)