共用方式為


_utime、 _utime32 _utime64、 _wutime、 _wutime32、 _wutime64

設定檔修改的時間。

int _utime(
   const char *filename,
   struct _utimbuf *times 
);
int _utime32(
   const char *filename,
   struct __utimbuf32 *times 
);
int _utime64(
   const char *filename,
   struct __utimbuf64 *times 
);
int _wutime(
   const wchar_t *filename,
   struct _utimbuf *times 
);
int _wutime32(
   const wchar_t *filename,
   struct __utimbuf32 *times 
);
int _wutime64(
   const wchar_t *filename,
   struct __utimbuf64 *times 
);

參數

  • filename
    字串,包含的路徑或檔名的指標。

  • times
    預存的時間值的指標。

傳回值

如果變更的檔案修改時間,每個函式會傳回 0。 傳回值為-1 表示發生錯誤。 如果傳遞了無效的參數時,不正確的參數處理常式會叫用,如所述參數驗證。 如果執行,則允許繼續執行,這些函數會傳回-1 和errno設定為下列值之一:

  • EACCES
    路徑指定目錄或唯讀的檔案

  • EINVAL
    無效times引數

  • EMFILE
    太多開啟的檔案 (若要變更其修改的時間,檔案必須先開啟)

  • ENOENT
    路徑或找不到的檔案名稱

請參閱 _doserrno、 errno、 _sys_errlist,以及 _sys_nerr 如需有關這些項目,和其他的詳細資訊,任何傳回碼。

如果變更日期是 1970 年 1 月 1 日午夜,以及使用的函式的結束日期之前,可以變更日期的檔案。 _utime與_wutime使用 64 位元的時間值,因此在結束日期 23: 59: 59,3000 年 12 月 31 UTC。 如果_USE_32BIT_TIME_T定義要強制舊的行為,結束日期是 03: 14: 07 以後 2038 年 1 月 19 日,UTC。 _utime32或_wutime32使用 32 位元時間型別,不論是否_USE_32BIT_TIME_T定義,而且一定會較早的結束日期。 _utime64或_wutime64一直使用 64 位元時間類型而定,所以這些函式永遠會支援較新的結束日期。

備註

_utime函式會設定所指定的檔案的修改時間filename*.* 處理程序必須有檔案的寫入權限,若要變更的時間。 在 Windows 作業系統中,您可以變更存取及修改時間,在_utimbuf結構。 如果times是NULL指標,修改的時間設定為目前的當地時間。 否則, times型別的結構必須指向_utimbuf,已定義在 SYS\UTIME 中。H.

_utimbuf結構會儲存所使用的檔案存取和修改時間_utime若要變更檔案修改日期。 此結構有下列的欄位,都屬於型別time_t:

  • actime
    檔案存取時間

  • modtime
    在檔案修改的時間

特定版本的_utimbuf結構 (_utimebuf32和__utimbuf64) 使用 32 位元和 64 位元版本的階段型別定義。 這些用在 32 位元與 64 位元特定版本之這個函式。 _utimbuf根據預設值本身會使用 64 位元階段型別,除非_USE_32BIT_TIME_T定義。

_utime是相同的_futime差異在於filename引數的_utime是檔名或路徑的檔案,而不是已開啟檔案的檔案描述項。

_wutime寬字元版本的_utime。 filename引數為_wutime是寬字元字串。 這些函式具有相同其他方式作業。

泛用文字常式對應

TCHAR。H 常式

_UNICODE & 未定義的 _MBCS

定義的 _MBCS

定義 _unicode 之後

_tutime

_utime

_utime

_wutime

_tutime32

_utime32

_utime32

_wutime32

_tutime64

_utime64

_utime64

_wutime64

需求

常式

所需的標頭

選擇性標頭

_utime, _utime32, _utime64

<sys/utime.h>

<errno.h>

_utime64

<sys/utime.h>

<errno.h>

_wutime

<utime.h> 或者 <wchar.h>

<errno.h>

其他的相容性資訊,請參閱相容性在簡介中。

範例

此程式會使用_utime為目前的時間設定在檔案修改時間。

// crt_utime.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/utime.h>
#include <time.h>

int main( void )
{
   struct tm tma = {0}, tmm = {0};
   struct _utimbuf ut;

   // Fill out the accessed time structure
   tma.tm_hour = 12;
   tma.tm_isdst = 0;
   tma.tm_mday = 15;
   tma.tm_min = 0;
   tma.tm_mon = 0;
   tma.tm_sec = 0;
   tma.tm_year = 103;

   // Fill out the modified time structure
   tmm.tm_hour = 12;
   tmm.tm_isdst = 0;
   tmm.tm_mday = 15;
   tmm.tm_min = 0;
   tmm.tm_mon = 0;
   tmm.tm_sec = 0;
   tmm.tm_year = 102;

   // Convert tm to time_t
   ut.actime = mktime(&tma);
   ut.modtime = mktime(&tmm);

   // Show file time before and after
   system( "dir crt_utime.c" );
   if( _utime( "crt_utime.c", &ut ) == -1 )
      perror( "_utime failed\n" );
   else
      printf( "File time modified\n" );
   system( "dir crt_utime.c" );
}

範例輸出

Volume in drive C has no label.
 Volume Serial Number is 9CAC-DE74

 Directory of C:\test

01/09/2003  05:38 PM               935 crt_utime.c
               1 File(s)            935 bytes
               0 Dir(s)  20,742,955,008 bytes free
File time modified
 Volume in drive C has no label.
 Volume Serial Number is 9CAC-DE74

 Directory of C:\test

01/15/2002  12:00 PM               935 crt_utime.c
               1 File(s)            935 bytes
               0 Dir(s)  20,742,955,008 bytes free

.NET Framework 對等用法

不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例

請參閱

參考

時間管理

asctime _wasctime

ctime、 _ctime32、 _ctime64、 _wctime、 _wctime32、 _wctime64

_fstat、 _fstat32、 _fstat64、 _fstati64、 _fstat32i64、 _fstat64i32

_ftime,_ftime32 _ftime64

_futime,_futime32 _futime64

gmtime,_gmtime32 _gmtime64

localtime,_localtime32 _localtime64

_stat,_wstat 函式

time,_time32 _time64