首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C从ctime值,ctime截断HH:MM:SS

C从ctime值,ctime截断HH:MM:SS
EN

Stack Overflow用户
提问于 2013-01-29 11:29:13
回答 2查看 453关注 0票数 0

我有这个unix时间戳,当使用ctime转换时,它显示为Thu Mar 26 15:30:26 2007,但我只需要Thu Mar 26 2007

如何更改或截断以消除时间(HH:MM:SS)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-29 11:43:42

由于您已经获得了time_t值,因此可以使用localtime()strftime()

代码语言:javascript
复制
#include <time.h>
#include <stdio.h>

int main(void)
{
    time_t t = time(0);
    struct tm *lt = localtime(&t);
    char buffer[20];
    strftime(buffer, sizeof(buffer), "%a %b %d %Y", lt);
    puts(buffer);
    return(0);
}

或者,如果您觉得必须使用ctime(),那么:

代码语言:javascript
复制
#include <time.h>
#include <stdio.h>
#include <string.h>

int main(void)
{
    time_t t = time(0);
    char buffer[20];
    char *str = ctime(&t);
    memmove(&buffer[0],  &str[0],  11);
    memmove(&buffer[11], &str[20],  4);
    buffer[15] = '\0';
    puts(buffer);
    return(0);
}
票数 1
EN

Stack Overflow用户

发布于 2013-01-29 11:35:18

来自strptime()的手册页

下面的示例演示了strptime()strftime()的用法。

代码语言:javascript
复制
   #include <stdio.h>
   #include <time.h>

   int main() {
           struct tm tm;
           char buf[255];

           strptime("2001-11-12 18:31:01", "%Y-%m-%d %H:%M:%S", &tm);
           strftime(buf, sizeof(buf), "%d %b %Y %H:%M", &tm);
           puts(buf);
           return 0;
   }

根据自己的需求进行调整。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14575200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档