共用方式為


asctime_s _wasctime_s

轉換tm時間為字元字串的結構。 這些函式是舊版asctime _wasctime中所述的安全性增強功能與安全性功能,則在 CRT 中

errno_t asctime_s( 
   char* buffer,
   size_t numberOfElements,
   const struct tm *_tm 
);
errno_t _wasctime_s( 
   wchar_t* buffer,
   size_t numberOfElements
   const struct tm *_tm 
);
template <size_t size>
errno_t asctime_s( 
   char (&buffer)[size],
   const struct tm *_tm 
); // C++ only
template <size_t size>
errno_t _wasctime_s( 
   wchar_t (&buffer)[size],
   const struct tm *_tm 
); // C++ only

參數

  • buffer
    [] out變數的指標,此緩衝區來儲存字元的字串結果。 這個函式假設是指向有效的記憶體位置,以指定的大小numberOfElements。

  • numberOfElements
    [in]用來儲存結果的緩衝區大小。

  • _tm
    [in]時間/日期結構。 這個函式會假設是指向有效的structtm物件。

傳回值

如果成功的話,則為零。 如果失敗時,不正確的參數處理常式會叫用,如所述參數驗證。 如果執行,則允許繼續執行,則傳回的值會是一個錯誤碼。 錯誤代碼被定義在 ERRNO 中。H. 如需詳細資訊,請參閱 errno 常數。 下表顯示實際傳回的錯誤情況的錯誤碼。

錯誤狀況

buffer

numberOfElements

tm

Return

在 [值buffer

NULL

Any

Any

EINVAL

不能修改

不NULL (指向有效的記憶體)

0

Any

EINVAL

不能修改

不NULL

0 < 大小 < 26

Any

EINVAL

空字串

不NULL

> = 26

NULL

EINVAL

空字串

不NULL

> = 26

無效的時間結構或超出範圍的情況下,元件的值

EINVAL

空字串

注意事項注意事項

錯誤條件的wasctime_s類似於asctime_s與大小限制以文字的例外狀況。

備註

asctime函式將轉換為字元字串的結構儲存一次。 _tm值通常取自呼叫gmtimelocaltime。 這兩個函式可以用來填入tm結構,所定義的時間。H.

timeptr 成員

tm_hour

自午夜開始計算 (0–23) 的小時

tm_isdst

正數,如果日光節約時間生效。 日光節約時間沒有作用 ; 如果為 0 如果日光節約時間的狀態是未知的,負值。 C 執行階段程式庫會假設執行計算的日光節約時間 (DST) 的美國的規則。

tm_mday

月 (1–31) 中的日

tm_min

(0–59) 整點小時之後的分鐘

tm_mon

月 (0–11; 年 1 月 = 0)

tm_sec

分鐘 (0–59) 後的秒數

tm_wday

一天的週 (0–6; 星期日 = 0)

tm_yday

(0–365 ; 年中的日 1 月 1 日 = 0)

tm_year

年 (目前年份減 1900年)

根據當地時間的區域設定時也調整轉換後的字元字串。 請參閱time,_time32 _time64_ftime,_ftime32 _ftime64,以及localtime_s,_localtime32_s _localtime64_s有關如何設定當地時間的函式和_tzset函式定義的時區環境和全域變數的相關資訊。

所產生的字串結果asctime_s包含完全 26 個字元,其格式Wed Jan 02 02:03:55 1980\n\0。 使用 24 小時制。 所有欄位都具有固定寬度。 換行字元和 null 字元會佔用最後兩個字串的位置。 做為第二個參數傳入的值至少必須是此大。 如果是更少,錯誤碼, EINVAL,將會被傳回。

_wasctime_s寬字元版本的asctime_s_wasctime_sasctime_s其他方式完全相同。

泛用文字常式對應

TCHAR。H 常式

_UNICODE & 未定義的 _MBCS

定義的 _MBCS

定義 _unicode 之後

_tasctime_s

asctime_s

asctime_s

_wasctime_s

在 C++ 中,使用這些函式已經過簡化的樣板的多載 ; 多載可以緩衝區長度自動推斷,而不必指定 size 引數。 如需詳細資訊,請參閱 安全範本多載

需求

常式

所需的標頭

asctime_s

<time.h>

_wasctime_s

<time.h> 或者 <wchar.h>

安全性

如果緩衝區的指標不是NULL且指標不是指向有效的緩衝區,函式將會覆寫所位於的位置。 這也會導致存取違規。

A 緩衝區溢位如果 size 引數中傳遞大於緩衝區的實際大小可能會發生。

範例

此程式會將系統時間放在 [長整數aclock,將其轉譯成結構newtime ,然後將它轉換成字串形式為,輸出,使用asctime_s函式。

// crt_asctime_s.c
#include <time.h>
#include <stdio.h>

struct tm newtime;
__time32_t aclock;

int main( void )
{
   char buffer[32];
   errno_t errNum;
   _time32( &aclock );   // Get time in seconds.
   _localtime32_s( &newtime, &aclock );   // Convert time to struct tm form.

   // Print local time as a string.

   errNum = asctime_s(buffer, 32, &newtime);
   if (errNum)
   {
       printf("Error code: %d", (int)errNum);
       return 1;
   }
   printf( "Current date and time: %s", buffer );
   return 0;
}
  

.NET Framework 對等用法

請參閱

參考

時間管理

ctime_s、 _ctime32_s、 _ctime64_s、 _wctime_s、 _wctime32_s、 _wctime64_s

_ftime,_ftime32 _ftime64

gmtime_s,_gmtime32_s _gmtime64_s

localtime_s,_localtime32_s _localtime64_s

time,_time32 _time64

_tzset