_strtime_s, _wstrtime_s

复制当前时间对缓冲区。 这些是 _strtime, _wstrtime 的版本与安全增强的 CRT中的安全功能如中所述。

errno_t _strtime_s(
   char *buffer,
   size_t numberOfElements
);
errno_t _wstrtime_s(
   wchar_t *buffer,
   size_t numberOfElements
);
template <size_t size>
errno_t _strtime_s(
   char (&buffer)[size]
); // C++ only
template <size_t size>
errno_t _wstrtime_s(
   wchar_t (&buffer)[size]
); // C++ only

参数

  • [out] buffer
    缓冲区,长度至少 10 个字节,其中时将写入。

  • [in] numberOfElements
    缓冲区的大小。

返回值

零,如果成功。

如果错误状态,当无效参数调用处理程序,如 参数验证所述。 ,如果有错误,则返回值是错误代码。 错误代码。 ERRNO.H 定义;对于此功能生成的具体错误参见下表。 有关错误代码的更多信息,请参见 errno 常数

错误状态

buffer

numberOfElements

Return

buffer内容

NULL

(任何)

EINVAL

不修改

不是 NULL (指向有效的缓冲区)

0

EINVAL

不修改

不是 NULL (指向有效的缓冲区)

0 个 AMP_LT 范围 AMP_LT 9

EINVAL

空字符串

不是 NULL (指向有效的缓冲区)

范围 AMP_GT 9

0

在注释中指定格式的当前时间

安全问题

,如果 numberOfElements 参数大于 9. 越大,按缓冲区的无效的非空值会导致访问冲突。

通过大于缓冲区的实际大小大于 numberOfElements 的值会导致缓冲区溢出。

备注

这些功能提供 _strtime 和 _wstrtime的更安全版本。 _strtime_s 功能复制当前本地时间到缓冲区指向由 timestr*。*时间格式化为 hh 是表示以 24 小时表示形式的两位数字的小时数的 hh:mm:ss , mm 是表示通过小时数的两位数字的分钟,并且, ss 是表示秒的两个数字。 例如,字符串 18:23:44 表示 23 分钟 44 秒通过 6 PM。 缓冲区长度必须至少为 9 字节;实际大小由第二个参数指定。

_wstrtime 是 _strtime的宽字符版本;参数和返回 _wstrtime 的值是宽字符字符串。 这些功能否则具有相同的行为。

在 C++ 中,使用这些功能由模板重载简化;重载可推断缓冲区长度 (自动不再需要指定范围参数),并且还可以用以较新,安全重复自动替换旧,不安全的功能。 有关更多信息,请参见 安全模板重载

一般文本例程映射:

TCHAR.H 实例

未定义的 _UNICODE _MBCS

定义的 _MBCS

定义的 _UNICODE

_tstrtime_s

_strtime_s

_strtime_s

_wstrtime_s

要求

实例

必需的头

_strtime_s

time.h

_wstrtime_s

time.h 或 wchar.h

有关其他的兼容性信息,请参见中介绍的 兼容性

示例

// strtime_s.c

#include <time.h>
#include <stdio.h>

int main()
{
    char tmpbuf[9];
    errno_t err;

    // Set time zone from TZ environment variable. If TZ is not set,
    // the operating system is queried to obtain the default value 
    // for the variable. 
    //
    _tzset();

    // Display operating system-style date and time. 
    err = _strtime_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
      exit(1);
    }
    printf( "OS time:\t\t\t\t%s\n", tmpbuf );
    err = _strdate_s( tmpbuf, 9 );
    if (err)
    {
       printf("_strdate_s failed due to an invalid argument.");
       exit(1);
    }
    printf( "OS date:\t\t\t\t%s\n", tmpbuf );

}
  

.NET Framework 等效项

请参见

参考

时间线

asctime_s, _wasctime_s

ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s

gmtime_s, _gmtime32_s, _gmtime64_s

localtime_s, _localtime32_s, _localtime64_s

mktime, _mktime32, _mktime64

time, _time32, _time64

_tzset