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值通常取自呼叫gmtime或localtime。 這兩個函式可以用來填入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_s與asctime_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
gmtime_s,_gmtime32_s _gmtime64_s