在 c 中将字符串转换为 time_t

Convert string to time_t in c

您好,我需要将包含字符串的变量 time 转换为 time_t 类型,格式如下:

   time_t t = time(NULL);
   struct tm *tm = localtime(&t);
   char time[100];
   strftime(time, 100, "%b %d %H:%M", tm);
   

我不想对上面的代码进行任何修改并保留我选择的格式。谢谢!

如果非标准C函数strptime()允许:

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

// Return -1 on error
time_t DR_string_to_time(const char *s) {
  // Get current year
  time_t t = time(NULL);
  if (t == -1) {
    return -1;
  }
  struct tm *now = localtime(&t);
  if (now == NULL) {
    return -1;
  }

  // Assume current year
  struct tm DR_time = {.tm_year = now->tm_year, .tm_isdst = -1}; 
  if (strptime(s, "%b %d %H:%M", &DR_time) == NULL) {
    return -1;
  }
  t = mktime(&DR_time);
  return t;
}

注意:"%b %d %H:%M"(月、日、时、分)不包含,所以代码需要一些年份来组成time_t .