【问题标题】:How to parse a string into a datetime struct in C?如何将字符串解析为 C 中的日期时间结构?
【发布时间】:2011-02-12 22:28:18
【问题描述】:

我想在 C 中将一个字符串 (char*) 解析为一个 tm 结构。是否有任何内置函数可以做到这一点?

我指的是 C99 标准中的 ANSI C。

【问题讨论】:

    标签: c c99


    【解决方案1】:

    在 UNIX 派生系统的 time.h 中有一个名为 strptime() 的函数。它的使用类似于scanf()

    如果您知道日期的格式,您可以直接使用scanf() 调用。

    I.E.

    char *dateString = "2008-12-10";
    struct tm * parsedTime; 
    int year, month, day; 
    // ex: 2009-10-29 
    if(sscanf(dateString, "%d-%d-%d", &year, &month, &day) != EOF){ 
      time_t rawTime;
      time(&rawTime);
      parsedTime = localtime(&rawTime);
    
      // tm_year is years since 1900
      parsedTime->tm_year = year - 1900;
      // tm_months is months since january
      parsedTime->tm_mon = month - 1;
      parsedTime->tm_mday = day;
    }
    

    除此之外,我不知道有任何 C99 char *struct tm 函数。

    【讨论】:

      【解决方案2】:

      虽然 POSIX 有 strptime(),但我认为在标准 C 中没有办法做到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-22
        • 1970-01-01
        • 1970-01-01
        • 2012-01-28
        相关资源
        最近更新 更多