c++ 自定义时间格式

1.自定义时间格式
   我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下: 
   size_t strftime( char *strDest, size_t maxsize, const char *format, const struct tm *timeptr );

2. 代码 

#include <iostream>
#include<ctime>
using namespace std;

string loginName();
int main()
{
    std::cout << "Hello World!\n";
    string date = loginName();
    cout <<"date:"<< date;
}
string loginName() {
    time_t now = time(0);
    tm ltm;
    localtime_s(&ltm, &now);
    char* date = new char[20];
    strftime(date, 20, "%F", &ltm);
    string rt = date;
    return rt;
}

 

3.附加说明

自定义时间格式:我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下: 
size_t strftime( char *strDest, size_t maxsize, const char *format, const struct tm *timeptr );

        我们可以根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放 maxsize个字符。该函数返回向strDest指向的字符串中放置的字符数。函数strftime()的操作有些类似于sprintf():识别以百分号(%)开始的格式命令集合,格式化输出结果放在一个字符串中。格式化命令说明串strDest中各种日期和时间信息的确切表示方法。

    格式串中的其他字符原样放进串中。格式命令列在下面,它们是区分大小写的。

%a 星期几的简写 %A 星期几的全称

%b 月分的简写 %B 月份的全称

%c 标准的日期的时间串 %C 年份的后两位数字

%d 十进制表示的每月的第几天 %D 月/天/年

%e 在两字符域中,十进制表示的每月的第几天

%F 年-月-日 %g 年份的后两位数字,使用基于周的年

%G 年分,使用基于周的年 %h 简写的月份名

%H 24小时制的小时 %I 12小时制的小时

%j 十进制表示的每年的第几天

%m 十进制表示的月份 %M 十时制表示的分钟数

%n 新行符 %p 本地的AM或PM的等价显示

%r 12小时的时间 %R 显示小时和分钟:hh:mm

%S 十进制的秒数 %t 水平制表符 %T 显示时分秒:hh:mm:ss

%u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)

%U 第年的第几周,把星期日做为第一天(值从0到53)

%V 每 年的第几周,使用基于周的年

%w 十进制表示的星期几(值从0到6,星期天为0) %W 每年的第几周,把星期一做为第一天(值从0到53)

%x 标准的日期串 %X 标准的时间串

%y 不带世纪的十进制年份(值从0到99) %Y 带世纪部分的十制年份

%z,%Z 时区名称,如果不能得到时区名称则返回空字符。

%% 百分号如果想显示现在是几点了,并以12小时制显示,就象下面这段程序: 

附加

// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include<ctime>
using namespace std;

void use_localtime();
void use_localtime_s();
string getDate();
string loginName();
int main()
{
    std::cout << "Hello World!\n";
    string date = loginName();
    cout <<"date:"<< date;
}
string loginName() {
    time_t now = time(0);
    tm ltm;
    localtime_s(&ltm, &now);
    char* date = new char[20];
    strftime(date, 20, "%F", &ltm);
    string rt = date;
    return rt;
}
string getDate() {
    time_t now = time(0);
    tm ltm;
    localtime_s(&ltm, &now);
    int yare = (1900 + ltm.tm_year);
    int month = ltm.tm_mon;
    int day = ltm.tm_mday;
    string date = yare + "_" + month;
    return "test";
}
void use_localtime() {
    // 基于当前系统的当前日期/时间
    time_t now = time(0);
    tm* ltm = localtime(&now);
    cout << "年: " << 1900 + ltm->tm_year << endl;
    cout << "月: " << 1 + ltm->tm_mon << endl;
    cout << "日: " << ltm->tm_mday << endl;
    cout << "时间: " << ltm->tm_hour << ":";
    cout << ltm->tm_min << ":";
    cout << ltm->tm_sec << endl;
}
void use_localtime_s() {
    // 基于当前系统的当前日期/时间
    time_t now = time(0);
    tm ltm;
    localtime_s(&ltm, &now);
    // 输出 tm 结构的各个组成部分
    cout << "年: " << 1900 + ltm.tm_year << endl;
    cout << "月: " << 1 + ltm.tm_mon << endl;
    cout << "日: " << ltm.tm_mday << endl;
    cout << "时间: " << ltm.tm_hour << ":";
    cout << ltm.tm_min << ":";
    cout << ltm.tm_sec << endl;
}

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值