小晴分享:让你拥有掌控未来的力量

发表于 2016-09-28 09:45 显示全部楼层 24 1807

本帖最后由 雪后初晴 于 2016-9-28 11:16 编辑

我相信,每一个人都会期盼着自己有个美好的未来。

那么,未来本质上是由什么组成的?


“滴答,滴答,滴答...”

你想到了什么?

没错,就是古语中经常描摹的“光阴似箭,日月如梭”那般景象。

 

想到了那首著名的《明日歌》

明日复明日,

明日何其多?

我生待明日,

万事成蹉跎。

 

世人苦被明日累,春去秋来老将至。

朝看水东流,暮看西日坠。

百年明日能几何?请君听我明日歌。

 

诗读罢,我们可以明白:

世界上的许多东西都能尽力争取和失而复得,

只有时间难以挽留。

人的生命只有一次,时间永不回头。

 

所以,我们不能在物欲繁华的世界中迷失本心。

应该珍惜每一天:活在当下,知足常乐。

莫要为自己的私欲活在明天的日子里。

 

下面,小晴与你分享,让自己拥有掌控未来的力量!


小晴分享の目录

1.未来是什么?

    未来 = 日期 + 时间

    即:你的未来 = 未来的年+月+日+时+分+秒

2.展望C语言笨拙的未来

2.日期的相关用法

3.时间的相关用法

#include <iostream>
#include <string>
#include <ctime>                                          //C日期时间      
#include <boost/date_time/gregorian/gregorian.hpp>        //日期
#include <boost/date_time/posix_time/posix_time.hpp>      //时间

using namespace std;
using namespace boost;
using namespace boost::gregorian;                         //日期的空间   
using namespace boost::posix_time;                        //时间的空间

int main()
{
    //展望C语言笨拙的未来
    //需求:现在要得到系统的本地日期、时间,
    
    time_t timet_obj(NULL);
    tm tm_obj = *localtime(&timet_obj);
    cout<<tm_obj.tm_year+1900<<"-"
        <<tm_obj.tm_month+1<<"-"
        <<tm_obj.tm_mday<<" "
        <<tm_obj.tm_hour<<":"
        <<tm_obj.tm_min<<":"
        <<tm_obj.tm_sec<<endl;
        
    /* 
     显示效果为:2016-9-28 10:22:6
     
     表示现在是2016年9月28日,10点22分6秒


    */
    

    system("pause");
    return 0;
}

可以看到,使用起来无比繁琐,累赘。

如果要自输入一个日期时间,再显示出来。

那是相当地麻烦。

因为要为tm成员一个一个地赋值,

(注意:没有构造函数供初始化)

然后在需要显示的时候使用IO流输出。

 

如果需求往上提高,要求能比较两日期相隔的天数,

能获得某年某月某天是星期几,

计算给定的年份是否是闰年,等等...

全部的算法实现都要自己写,恼不恼火?

 

一.使用boost日期来简化传统日期的初始化,输出。

#...

int main()
{
    
    string s1 = "20160928";
    date d1(from_undelimited_string(s1));
    cout<<to_iso_extended_string(d1)<<endl;
    
    /*
        显示效果为:2016-09-28   
    */
    
    /*
    可以看到,date较C语言的tm结构,
    明显在初始化和输出方面要简便太多。
    使用我们熟悉的构造函数来完成初始化任务,
    使用cout流一次性输出整个日期,并且格式是我们想要的。    
    */
    string s2 = "2016/09/18";
    date d2(from_simple_string(s2));
    cout<<to_simple_string(d1)<<endl;
    
    /*
     显示效果为:
     2016-Sep-28,其中Sep为September,九月的意思。  
    */
    system("pause");
    return 0;
}

英文回顾:

    January        一月

    February      二月

    March           三月

    April              四月

    May               五月

    June              六月

    July               七月

    August           八月

    September    九月

    October         十月

    November     十一月

    December     十二月


二.boost日期的初始化与异常捕捉。

为了让某些用户在日期使用上不能乱给数值,

我们需要使用异常来捕捉非法输入

正确的日期范围是:

年:1400~9999

月:1~12

日:1~31

所有不再本区间的日期数需要被异常捕捉。


注意:1400年以前的年份处理不了,

那有人可能会说,我要处理1400年以前的年份怎么办?

我想说1400年以前出生的人都羽化而登仙了。

有几个人会去研究消亡的事物?


#...

int main()
{
    //日期与异常
    try
    {
        date d1(2016,31,12);
        cout<<"your input date is right."<<endl;
    }catch(std::exception &e)
    {
        cout<<"异常信息为:"<<e.what()<<endl;
    }    

}

/*
显示信息为:

异常信息为:Month number is out of range 1..12

翻译成中文意思:月份数超过了1~12的范围。

*/

 

三.访问日期。

现在我们要完成一个需求,随便输入一个日期,

要求打印当月的天数的完全日期信息。

#...


int main()
{
 try
 {
  int input_month;
  cout << "请输入月份:";
  cin >> input_month;
  greg_month month = greg_month(input_month);    //设置月份
  date d1(2016, month, 1);
  date d2(2016, month + 1, 1);
  while (d1 < d2)
  {
   date::ymd_type ymd = d1.year_month_day();     //访问date对象的年,月,日成员  
   cout << ymd.year <<"/"<< ymd.month.as_number() <<"/"<< ymd.day << endl;
   cout << to_simple_string(d1) << endl;
   cout << "---------" << endl;
   d1 += days(1);
  }
 }
 catch(std::exception &e)
 {
  cout<<"异常信息:"<<e.what()<<endl;
 }

}
/*
 请输入月份:9
2016/9/1
2016-Sep-01
---------
2016/9/2
2016-Sep-02
---------
2016/9/3
2016-Sep-03
---------
... ...
---------
2016/9/30
2016-Sep-30

*/

唉,这编辑器格式真laji ! 将日常练习复制过来还要我调格式。

累觉不爱,暂时不写了。

忽然觉得使用IDE好幸福...

 

 


 

回复 使用道具
举报
pcatzj

发表于 2017-02-12 15:00 显示全部楼层

回复 支持 反对 使用道具
举报
年轻的音符

发表于 2017-02-12 10:21 显示全部楼层

回复 支持 反对 使用道具
举报
江北飙车

发表于 2017-02-12 02:59 显示全部楼层

回复 支持 反对 使用道具
举报
nettman

发表于 2017-02-11 23:02 显示全部楼层

给楼主32个赞!!!!!

回复 支持 反对 使用道具
举报
PPAP!

发表于 2017-02-10 05:03 显示全部楼层

别人说是金子总要发光的,我就来看看。

回复 支持 反对 使用道具
举报
江北飙车

发表于 2017-02-10 00:47 显示全部楼层

作为新人,在吧里不敢大声说话,也不敢得罪人,只能默默地顶完贴转身就走,不求深藏功与名,只求前排混脸熟

回复 支持 反对 使用道具
举报
腐女大作战

发表于 2017-02-09 22:47 显示全部楼层

回复 支持 反对 使用道具
举报
nettman

发表于 2017-02-09 22:47 显示全部楼层

祝愿小码哥越来越红火!!红红火火恍恍惚惚!

回复 支持 反对 使用道具
举报
活泼的方小闹

发表于 2017-02-09 14:35 显示全部楼层

回复 支持 反对 使用道具
举报
123下一页

发表新文章

5

学分

2273

学币

3318

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3318

叩丁狼版主勋章前100注册用户勋章叩丁狼一周年勋章活动达人勋章真土豪勋章勋章意见领袖勋章论坛百帖达成勋章

Ta的主页 发消息
精华帖排行榜

精彩推荐

  • 关注叩丁狼教育