如何优雅的写C++代码 Obotcha介绍(Calendar类)

  C++中关于日历的类我暂时没有找到,哈哈,网上只能找到这样的描述:“C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime> 头文件。“所以操作日期在C++里面是比较烦人的。参看Java的Calendar类,它提供了各种操作类,详细可以参看:

http://androidxref.com/9.0.0_r3/xref/libcore/ojluni/src/main/java/java/util/Calendar.java

在Obotcha中我们也仿照Java,有一个Calendar类,它提供了下面的方法:

bool isLeapYear(int year);
void increaseYear(int year);
void decreaseYear(int year);
void increaseDay(int day);
void decreaseDay(int day);
void increaseMonth(int mon);
void decreaseMonth(int mon);
void increaseHour(int hour);
void decreaseHour(int hour);
void increaseMinute(int minute);
void decreaseMinute(int minute);
void increaseSecond(int second);
void decreaseSecond(int second);
bool sameDate(Calendar c);
bool set(CalendarType type,int value);
int get(CalendarType type);
long int toTimeMillis();
void setTime(long int msec);

Calendar类中,比较复杂的就是计算dayOfweek.介绍一下dayOfweek的计算方法(基姆拉尔森计算公式),具体的算法可以baidu一下,代码如下,卡卡几下就把星期几计算出来了~~~:

int _Calendar::caculateDayOfWeek(int y, int m, int d) {
    m += 1;
    d += 1;

    if(m == 1 || m == 2) {  
        m += 12;  
        y--;  
    }

    int week = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
	return week;
}  

此外,由于Calendar基本都是自己写的算法,所以特地跑了一下单体测试:

https://github.com/wangsun1983/Obotcha/tree/master/test/testCalendar

感兴趣的同学可以看一下。自从开始写Obotcha,越来越觉的单体测试的重要性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值