Linux C實現更改檔案時間

2021-08-22 19:33:09 字數 1961 閱讀 9064

主要是通過utime()這個函式實現的

標頭檔案:

#include

#include

函式定義:

int

utime

(const

char

* filename,

struct utimbuf * buf)

;

函式說明:utime()用來修改引數filename 檔案所屬的inode 訪問時間。結構utimbuf 定義如下:

struct utimbuf

;

返回值:如果引數buf 為空指標(null), 則該檔案的訪問時間和更改時間全部會設為目前時間.。執行成功則返回0,失敗返回-1,錯誤**存於errno。

錯誤**:

實現**

#include

#include

#include

#include

#include

void

set_time

(const

char

* filename,

const

char

* time)

;strncpy

(year,time,4)

;char month[3]

=;strncpy

(month,time+4,

2);char day[3]

=;strncpy

(day,time+6,

2);char hour[3]

=;strncpy

(hour,time+8,

2);char min[3]

=;strncpy

(min,time+10,

2);char sec[3]

=;strncpy

(sec,time+12,

2);struct tm t;

t.tm_year =

atoi

(year)

-1900

; t.tm_mon =

atoi

(month)-1

; t.tm_mday =

atoi

(day)

; t.tm_hour =

atoi

(hour)

; t.tm_min =

atoi

(min)

; t.tm_sec =

atoi

(sec)

; time_t newt =

mktime

(&t)

;struct utimbuf newtime =

;utime

(filename,

&newtime);}

intmain

(int argc,

char

const

*argv)

set_time

(argv[1]

,argv[2]

);return0;

}

c/c++中表示時間的型別有兩種:time_t 和tm

time_t 這種型別用來儲存從2023年到現在經過了多少秒

tm則是乙個結構體型別,直接儲存年月日時分秒等

struct tm

;

需要特別注意的是,年份是從2023年起至今多少年,而不是直接儲存如2023年,月份從0開始的,0表示一月,星期也是從0開始的, 0表示星期日,1表示星期一。

由於utime( )的結構引數utimebuf儲存的是time_t型別的成員,所以要進行轉換

time_t mktime

(struct tm* timeptr)

;

Delphi 更改檔案時間

總是會遇到檔案拷貝之後需要更改檔案時間的要求。這裡就小小的記錄一下。語言 delphi 功能 檔案的時間更新成現在系統的時間。procedure setfiledatetime sfilename string varfs tfilestream ft tfiletime syst systemti...

linux C之alarm函式 更改

alarm也稱為鬧鐘函式,alarm 用來設定訊號sigalrm在經過引數seconds指定的秒數後傳送給目前的程序。如果引數seconds為0,則之前設定的鬧鐘會被取消,並將剩下的時間返回。要注意的是,乙個程序只能有乙個鬧鐘時間,如果在呼叫alarm之前已設定過鬧鐘時間,則任何以前的鬧鐘時間都被新...

linux C之alarm函式 更改

alarm也稱為鬧鐘函式,alarm 用來設定訊號sigalrm在經過引數seconds指定的秒數後傳送給目前的程序。如果引數seconds為0,則之前設定的鬧鐘會被取消,並將剩下的時間返回。要注意的是,乙個程序只能有乙個鬧鐘時間,如果在呼叫alarm之前已設定過鬧鐘時間,則任何以前的鬧鐘時間都被新...