C 库 - localtime() 函数



C 库的 localtime() 函数用于处理与时间相关的任务,尤其是在用户希望以人类可读的格式显示时间信息时。

这里,struct tm *localtime(const time_t *timer) 使用 timer 指向的时间来填充一个 tm 结构,该结构包含表示对应本地时间的数值。timer 的值被分解到 tm 结构中,并以本地时区表示。

语法

以下是 C 库 localtime() 函数的语法:

struct tm *localtime(const time_t *timer)

参数

此函数仅接受一个参数:

  • timer - 这是一个指向 time_t 值的指针,表示日历时间。

返回值

此函数返回一个指向 tm 结构的指针,其中填充了时间信息。

以下是 tm 结构的信息:

struct tm {
   int tm_sec;         /* seconds,  range 0 to 59          */
   int tm_min;         /* minutes, range 0 to 59           */
   int tm_hour;        /* hours, range 0 to 23             */
   int tm_mday;        /* day of the month, range 1 to 31  */
   int tm_mon;         /* month, range 0 to 11             */
   int tm_year;        /* The number of years since 1900   */
   int tm_wday;        /* day of the week, range 0 to 6    */
   int tm_yday;        /* day in the year, range 0 to 365  */
   int tm_isdst;       /* daylight saving time             */	
};

示例 1

以下是一个基本的 C 库程序,用于演示 localtime() 函数。

#include <stdio.h>
#include <time.h>
int main () {        
   time_t rawtime;
   struct tm *info;
   time( &rawtime );
   info = localtime( &rawtime );
   printf("Current local time and date: %s", asctime(info));
   return(0);
}

输出

执行上述代码后,我们将得到以下结果:

Current local time and date: Tue May 14 10:01:48 2024

示例 2

下面的程序说明了如何使用 time() 函数获取当前时间,以及如何使用 localtime() 函数显示结果。

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

int main()
{
   time_t current_time;
   
   // get the current time using time()
   current_time = time(NULL);
   
   // call the function localtime() that takes timestamp and convert it into localtime representation
   struct tm *tm_local = localtime(&current_time);
   
   // corresponding component of the local time
   printf("Current local time : %d:%d:%d", tm_local -> tm_hour, tm_local -> tm_min, tm_local -> tm_sec);
   return 0;
} 

输出

上述代码产生以下结果:

Current local time : 11:36:56

示例 3

在处理当前日期的任务时,它使用 localtime() 提供日期,并使用 strftime() 显示格式化的结果。

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

int main(void) {
   size_t maxsize = 80;
   char dest[maxsize];

   time_t now;
   struct tm *tm_struct;

   time(&now);
   tm_struct = localtime(&now);

   strftime(dest, maxsize, "%D", tm_struct);
   printf("Current date: %s\n", dest);

   return 0;
}

输出

执行代码后,我们将得到以下结果:

Current date: 05/17/24
广告