asctime_r() — 時間から文字ストリングへの変換 (再始動可能)

フォーマット

#include <time.h>
char *asctime_r(const struct tm *tm, char *buf);

言語レベル

XPG4

スレッド・セーフ

はい

説明

この関数は、asctime() 関数の再始動可能バージョンです。

asctime_r() 関数は、tm により指される構造体として格納された時間を、文字ストリングに変換します。tm 値は、gmtime_r()gmtime64_r()localtime_r()、または localtime64_r() の呼び出しから取得できます。

asctime_r() が作成するストリングの結果にはちょうど 26 文字が含まれ、以下の形式となっています。
   "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n"
戻されるストリングの例を以下に示します。
   Sat Jul 16 02:03:55 1994\n\0
または
   Sat Jul 16  2:03:55 1994\n\0

asctime_r() 関数は 24 時間クロック形式を使用します。曜日は、SunMonTueWedThuFri、および Sat に省略されます。月は、JanFebMarAprMayJunJulAugSepOctNov、および Dec に省略されます。すべてのフィールドには固定幅があります。一桁しかない日付は、ゼロまたはブランク・スペースが その前に置かれます。改行文字 (\n) および NULL 文字 (\0) がストリングの最後の位置を占めます。

日時の関数は、1970 年 1 月 1 日 00:00:00 世界時から始まります。

戻り値

asctime_r() 関数は結果として生じた文字ストリングを指すポインターを戻します。 関数が正常に実行されなかった場合、NULL を戻します。

次の例はシステム・クロックをポーリングし、現在時刻を示すメッセージを出力します。
#include <time.h>
#include <stdio.h>
 
int main(void)
{
    struct tm *newtime;
    time_t ltime;
    char  mybuf[50];
 
/* Get the time in seconds */
    time(&ltime);
/* Convert it to the structure tm */
    newtime = localtime_r(&ltime());
/* Print the local time as a string */
    printf("The current date and time are %s",
             asctime_r(newtime, mybuf));
}
 
/****************  Output should be similar to  ******************
The current date and time are Fri Sep 16 132951 1994
*/