Dav*_*vid 16
日期/时间可以采用两种格式:
日期/时间函数和类型在time.h头文件中声明.
时间可以存储为整数或结构的实例:
作为使用time_t算术类型的数字 - 将日历时间存储为自UNIX纪元1970年1月1日00:00:00以来经过的秒数
使用结构timeval - 将日历时间存储为自UNIX纪元1970年1月1日00:00:00以来经过的秒数和纳秒数
使用结构tm存储localtime,它包含如下属性:
tm_hour
tm_min
tm_isdst
Run Code Online (Sandbox Code Playgroud)上面的tm_isdst属性用于指示夏令时(DST).如果值为正,则为DST,如果值为0,则不是DST.
#include <stdio.h>
#include <time.h>
int main ( int argc, char *argv[] )
{
time_t now;
now = time ( NULL );
printf ( "It’s %ld seconds since January 1, 1970 00:00:00", (long) now );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在上面的程序中,函数时间读取UNIX系统时间,从1970年1月1日00:00:00(UNIX纪元)中减去它,并以秒为单位返回其结果.
#include <stdio.h>
#include <time.h>
int main ( int argc, char *argv[] )
{
time_t now;
struct tm *lcltime;
now = time ( NULL );
lcltime = localtime ( &now );
printf ( "The time is %d:%d\n", lcltime->tm_hour, lcltime->tm_min );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在上面的程序中,函数localtime将从UNIX纪元到耗尽时间的经过时间(以秒为单位)转换.localtime读取UNIX环境TZ(通过调用tzset函数)返回相对于时区的时间并设置tm_isdst属性.
UNIX中TZ变量的典型设置(使用bash)如下:
export TZ=GMT
Run Code Online (Sandbox Code Playgroud)
要么
export TZ=US/Eastern
Run Code Online (Sandbox Code Playgroud)
#include <stdio.h>
#include <time.h>
int main ( int argc, char *argv[] )
{
time_t now;
struct tm *gmt;
char formatted_gmt [50];
now = time ( NULL );
gmt = gmtime ( &now );
strftime ( formatted_gmt, sizeof(formatted_gmt), "%I:%M %p", gmt );
printf ( "The time is %s\n", formatted_gmt );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在上面的程序中,函数strftime提供了日期的专门格式.
| 归档时间: |
|
| 查看次数: |
11660 次 |
| 最近记录: |