【问题标题】:How to format system time in C?如何在C中格式化系统时间?
【发布时间】:2012-10-03 22:37:41
【问题描述】:

我正在处理一个程序元素,该元素以(24 小时制)小时和分钟为单位获取系统时间,并将其格式化为 HH:MM 并将其存储在数组中。分钟也必须增加 1。这是我的代码:

 strftime (timeh,10,"%H:",formtime);
 strftime (timem,10,"%M",formtime);
 timem1 = atoi(timem);
 ++timem1;
 itoa(timem1, timem, 10);
 strcpy(time, timeh);
 strcat(time, timem);

我通过简单地打印出 time 来测试它,这是 printf("%s", time) 的输出: 5.(时间是凌晨1点04分)

单独地,小时打印为空(凌晨 1:08),分钟打印正确。

如何使数组 time 保持格式正确的 HH:MM 时间?

感谢您的所有建议

【问题讨论】:

    标签: c time formatting strftime time.h


    【解决方案1】:

    与其尝试直接调整分钟并且不必担心在小时换行,您应该将时间调整 60 秒,然后将其拆分为 struct tm 进行格式化:

    time_t now;
    time(&now);
    now += 60;
    strftime(buffer, sizeof(buffer), "%H:%M", localtime(&now));
    

    请注意,调用数组time 不是一个好主意,因为这会与用于获取当前时间的标准函数time 冲突。

    【讨论】:

      【解决方案2】:

      如果我没看错你的问题,你应该可以这样做:

      formtime->tm_min++; /* Additional checks needed. */
      strftime(time, 10, "%H:%M", formtime);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-14
        相关资源
        最近更新 更多