将指定的时间转换为字符串输出-----strftime()

#include <time.h>
size_t strftime(char *s, size_t max, const char *format,const struct tm *tm);
描述:格式化时间数据,该函数根据format指定的格式化形式区格式化一个存储于时间结构体tm中的时间,并将结果保存在由s指定的大小位max的字符串中。
参数:
    s:用于存放格式化结果的字符串的起始地址
    max:用于存放结果的空间的大小
    format:格式化形式。这个格式化形式是由一些被称为转换规格的特殊字符序列构成的非空字符串,每个字符前都需要加上%作为引导,这些字符称为转换说明字符,除此之外的所有字符被称为普通字符。这些普通的字符将不会做转换处理,而是直接拷贝到s指定的字符串中,而转换说明字符将会被代替成如下表所示内容(举一些常见的):
        %a-----tm_wday:星期几的缩写(英文)
        %A-----tm_wday:星期几的全拼(英文)
        %b-----tm_mon:月份的缩写(英文)
        %B-----tm_mon:月份的全拼(英文)
        %C-----tm_year:世纪
        %d-----tm_mday:几号
        %D-----%m/%d/%y:前者直接表示后者的格式
        %e-----tm_mday:也是表示几号,但是个位数表示的时候,前面的0被空格代替
        %F-----%Y-%m-%d:前者直接代表后者的格式
        %H-----tm_hour:24小时制时间(00-23)
        %I-----tm_hour:12小时制时间(01-12)
        %M-----tm_min:分钟数(00-59)
        %m-----tm_mon:月份数(01-12)
        %S-----tm_sec:秒数(00-59)
        %Y-----tm_year:包括世纪的年份
    tm:存放时间结构的结构体指针
返回值:
    1)转换后填写到s中的字符的长度
    2)0:这并不是一个函数错误的返回值,当格式字符串为空或者转换后的字符串的长度大于给定的max就会返回0.只能说是没有转换成功。        
注意:并不是每种特殊字符串都可以使用的,需要本地的环境支持,如果不支持某些字符,这些字符会被原样输出到字符串s。

函数测试如下:

这里写代码片#include <iostream>
#include <time.h>
using namespace std;
int main(int argc,char *argv[]){
        //用于存放转换成字符串形式的时间格式的缓存区
        char timeBuf[128] = {0};
        //指定时间
        time_t nowTime = time(NULL);
        strftime (timeBuf,sizeof(timeBuf),"%Y-%m-%d %H-%M-%S",localtime(&nowTime));
        cout << timeBuf << endl;
}
-----------------------------
linxin@ubuntu:~/Library$ a.out 
2018-07-06 21-29-56

猜你喜欢

转载自blog.csdn.net/displaymessage/article/details/80950350
今日推荐