在很多时候,我们需要获取星期值。而很多人都喜欢在设置时钟中去设置星期,事实上根本没有必要这么麻烦,我们只需要获取日期就可以随时计算出星期了。
星期是固定的以7天作为周期进行计算的,所以,只要通过日期获取,具体的天数,通过对7作为周期计算就可以获取星期值了,具体的函数如下:
/**************************************************************************************
* FunctionName : GetWeek()
* Description : 通过日期获取周
* EntryParameter : year, month, day - 日期
* ReturnValue : 返回周
**************************************************************************************/
U8 GetWeek(U8 year, U8 month, U8 day)
{
U8 i, y, m, d, weekDay;
U16 ti = 2000;
U32 days = 0;
y = (year >> 4) * 10 + (year & 0x0F);
m = (month >> 4) * 10 + (month & 0x0F);
d = (day >> 4) * 10 + (day & 0x0F);
for (i = 0; i
关键字:日期 星期
引用地址:通过日期计算出星期
{
if ((ti % 4) == 0 && (ti % 100) != 0 || (ti % 400) == 0)
{
days += 366;
}
else
{
days += 365;
}
ti++;
}
for (i = 1; i
{
switch (i)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
{
days += 31;
break;
}
case 2:
{
ti = 2000 + y;
if ((ti % 4) == 0 && (ti % 100) != 0 || (ti % 400) == 0)
{
days += 29;
}
else
{
days += 28;
}
break;
}
case 4:
case 6:
case 9:
case 11:
{
days += 30;
break;
}
}
}
days += d;
weekDay = (days % 7) + 5;
weekDay %= 7;
return weekDay;
}
上一篇:单片机开关机的实现
下一篇:单片机之串口数据处理
推荐阅读最新更新时间:2024-03-16 15:00
DS1302的AVR程序(2000年~2099年的星期自动计算功能)
虽然是在MEGA128上调的但适用于所有AVR芯片,改下管脚设置就行了。 程序不是我原创,我只是把我找到的DS1302程序和星期计算程序做了下修改使他们能适应我的系统能一起工作而已,在此向写这些程序的原作者表示敬意。 struct timechar { uchar nowyear; uchar nowmonth; uchar nowday; uchar nowhour; uchar nowminute; uchar nowsecond; uchar nowweek; }; struct timechar nowtime;///这里存时间 #define ds1302_rst 7
[单片机]
红米6:口号对标联想Z5 日期PK vivo NEX
摘要:6月12日,原本是vivo发布NEX手机的日子,没想到雷军手持红米6从天而降,小米也要选在当天发布新手机,颇有点两军对垒的意味,看来当天吃瓜群众们有好戏看了。 今天上午,红米手机官微正式宣布下一代的国民手机红米6将于6月12日在北京发布,就是这么一则消息,小编发现两个有意思的地方。 口号对标联想Z5 昨天发布的联想Z5,它的slogan是国民新旗舰,这与红米Pro的“国民旗舰”宣传语有着惊人的相似,由于常程在发布会前学罗永浩牛皮吹大了,结果发布了搭载骁龙636处理器的联想Z5,且外观还存在虚假宣传的嫌疑,没有达到网友们的心理预期,引来批评声一片,“国民新旗舰”就这么“沉了”。 国民旗舰红米Pro冲击
[手机便携]
小广播
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐
最新单片机文章
更多精选电路图
更多热门文章
更多每日新闻
更多往期活动
11月23日历史上的今天
厂商技术中心