localtime, _localtime32, _localtime64
转换时间值并为本地时区更正。 这些功能的更安全版本可用; localtime_s, _localtime32_s, _localtime64_s参见。
struct tm *localtime(
const time_t *timer
);
struct tm *_localtime32(
const __time32_t *timer
);
struct tm *_localtime64(
const __time64_t *timer
);
参数
- timer
为内存的指针。
返回值
,如果日期传递给函数的是,请返回指向结构结果或 NULL :
在午夜之前, 1970 年一月 1 日。
在 03:14 后面: 07, 2038 年一月 19 日, UTC (使用 _time32和 time32_t)。
在 23:59 后面: 59, 3000 年十二月 31 日,, UTC (使用 _time64 和 __time64_t)。
_localtime64,使用 __time64_t 结构,允许日期下午 23:59 表示: 59, 3000 年十二月 31 日,,协调世界 (UTC)时 (utc),,而 _localtime32 下午 03:14 表示日期: 一月 07 日 19 日 2038 中, UTC。
localtime 是计算结果为 _localtime64的内联函数,并且, time_t 与 __time64_t等效。 如果需要强制编译器解释 time_t为旧 32 位 time_t,可以定义 _USE_32BIT_TIME_T。 这样做将导致 localtime 计算为 _localtime32。 建议不要这样做,因为应用程序可以在 2038 年一月 19 日之后,失败,并且在 64 位平台不允许的。
结构类型 tm 字段存储下列值,每个都是 int:
tm_sec
秒数分钟 (0 – 59) 之后。tm_min
分钟数小时 (0 – 59) 之后。tm_hour
在午夜 (0 – 23) 之后的小时数。tm_mday
日期月份 (1 – 31)。tm_mon
月份 (0 – 11;一月 = 0)。tm_year
年份 (减号 1900 的当前年份)。tm_wday
每周日期 (0 – 6;sunday = 0)。tm_yday
日、 (0 – 365;一月 1 日 = 0 日)。tm_isdst
正值,如果夏时制实际上是;0,如果夏时制不起作用;负值,如果夏时制的状态是未知的。 如果 TZ 环境变量设置, C 运行库假定规则适用于实现的夏时制保存时的计算美国 (DST)。
备注
localtime 功能在类型 tm结构强制转换为 time_t 值存储的时间并存储结果。 long 值 timer 秒表示自午夜 (00:00 elapsed: 00), 1970 年一月 1 日, UTC。 此值从 time 功能通常获取。
gmtime、 mktime、 mkgmtime和 localtime 所有的 32 位和 64 位版本为将使用一个 tm 结构每个线程。 每次调用这些实例之一销毁结果的前一个调用。
,如果用户首先设置全局环境变量 TZ,localtime 为本地时区更正。 当 TZ 设置时,其他三个环境变量 (_timezone、 _daylight和 _tzname) 自动设置为。 如果 TZ 变量未设置, localtime 尝试在 " 控制面板 " 中用于日期/时间应用程序指定时区的信息。 如果此信息无法获取,默认情况下,表示太平洋时区,使用 PST8PDT。 有关这些变量的声明参见 _tzset 。 TZ 是 localtime的 ANSI 标准定义的而不是 Microsoft 扩展 " 一节。
备注
目标环境应尝试确定夏时制是否有效。
这些功能验证其参数。 如果 timer 是 null 指针,或者,如果计时器值为负,这些函数调用无效参数处理程序,如 参数验证所述。 如果执行允许继续,函数返回 NULL 并将 errno 到 EINVAL。
要求
实例 |
必需的头 |
---|---|
localtime |
time.h |
_localtime32 |
time.h |
_localtime64 |
time.h |
有关其他的兼容性信息,请参见中介绍的 兼容性 。
示例
// crt_localtime.cpp
// compile with: /W3
/* This program uses _time64 to get the current time
* and then uses localtime64() to convert this time to a structure
* representing the local time. The program converts the result
* from a 24-hour clock to a 12-hour clock and determines the
* proper extension (AM or PM).
*/
#include <stdio.h>
#include <string.h>
#include <time.h>
int main( void )
{
struct tm *newtime;
char am_pm[] = "AM";
__time64_t long_time;
_time64( &long_time ); // Get time as 64-bit integer.
// Convert to local time.
newtime = _localtime64( &long_time ); // C4996
// Note: _localtime64 deprecated; consider _localetime64_s
if( newtime->tm_hour > 12 ) // Set up extension.
strcpy_s( am_pm, sizeof(am_pm), "PM" );
if( newtime->tm_hour > 12 ) // Convert from 24-hour
newtime->tm_hour -= 12; // to 12-hour clock.
if( newtime->tm_hour == 0 ) // Set hour to 12 if midnight.
newtime->tm_hour = 12;
char buff[30];
asctime_s( buff, sizeof(buff), newtime );
printf( "%.19s %s\n", buff, am_pm );
}
.NET Framework 等效项
请参见
参考
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64