我这里有一个使用localtime函数的代码。但对于其输入参数的某些值,代码会崩溃(返回空指针)。我想知道它的输入允许范围。

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

int main ()
{
  time_t rawtime;
  struct tm g;
  struct tm *gp;
  __int64 tim;

  tim = 7476811632013133299LL; // I know it's a weird number but valid for time_t
  rawtime = tim / 1000LL;
  gp = localtime(&rawtime);
  printf("Pointer gp = %p\n", gp);

  g = *gp; // this crahses because gp = NULL

  return 0;
}

那么对于localtime函数的允许输入范围可以说什么呢?

最佳答案

MSDN page for localtime开始:
返回指向结构结果的指针,如果传递的日期为空
函数是:
1970年1月1日午夜前。
2038年1月19日03:14:07之后,UTC(使用时间32和时间32)。
在3000年12月31日23:59:59之后,UTC(使用'u time64和'uu time64't)。

关于c - 本地时间函数的有效参数是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35048512/

10-08 21:30