Domino计算当前日期是这一年的第几周,以及计算任意一周都分别是哪七天?
来源:互联网 发布:淘宝店该怎么开 编辑:程序博客网 时间:2024/04/30 13:58
最近用domino做了一个一周工作日志安排的项目,需要用户在表上填写每天的工作日志,不想把表中的日期写死,所以用函数把一周的开始/结束日期算出来,下面是程序代码:
以下为转载,来源至百度搜索
说明一下,我这里是以星期日作为一周的开始
思路如下:
首先要计算今天离元旦相差多少天,然后除以7就得出今天离元旦多少个星期了。
这里要判断有无余数,如果有余数,则把商加1,就得出今天相距元旦多少个星期了。
REM {获取元旦};
yuandan := @ToTime(@Text(@Year(@Now))+"-01-01");
x:= @Integer(((@Today-yuandan)/(3600*24)+1)/7);
y:=((@Today-yuandan)/(3600*24)+1)/7;
@If(y-x>0;x+1;x)
但目前算出的只是今天相距元旦的星期数,并不是真正的周次。
因为每年元旦并不都是星期日,例如2006年的元旦是星期日,则本年的第一周是完整的一周(有7天)。
如果元旦不是星期日,则本年的第一周就只有(7-星期数)天。
例如2005年的元旦是星期六,则本年的第一周只有1天,1月2号就是第二周的开始了。
所以如果只用上面的四行代码,是不符合实际情况的。
而且上面的代码还有bug,如果@Today是元旦,那会输出0。
要计算真正的周次,就要从第二周开始算起。
第一周的天数是7减元旦的星期数,
如果元旦是星期日, @Weekday(yuandan)返回1,星期一返回2。
所以星期数要减一。代码如下:
yuandan := @ToTime(@Text(@Year(@Now))+"-01-01");
wd := @Weekday(yuandan);
t := 7-(wd-1);
用@Today 减元旦,再减第一周天数t,再加一,就是@Today到第二周开始的天数t1。
这里要做个判断,
If @Today 就是第一周里的,那得出的结果t1就会是负数,我们可以直接输出@Today 所在周次是第一周。
Else 用 t1除以7,得出@Today 距离第二周有多少周。 然后加上1,就是加上第一周。就得出实际的周次了。
这里还有个需求就是,一年365天,就等于52周加1天。每年的第53周与下一年的第一周其实是同一周,
所以这里的周报只算52周,如果算到第53周,就改为下一年的第一周。
具体实现就是把53改为1,然后把年份那个域的值加1。
完整代码如下:
REM {获取元旦};
yuandan := @ToTime(@Text(@Year(@Now))+"-01-01");
REM {判断元旦是否sunday,@Weekday(sunday)=1};
wd := @Weekday(yuandan);
@If(wd=1;
@Do(
x:= @Integer(((@Today-yuandan)/(3600*24)+1)/7);
y:=((@Today-yuandan)/(3600*24)+1)/7;
@If(y-x>0;x+1;x)
);
@Do(
t := 7-(wd-1);
t1 := (@Today-yuandan)/(3600*24)-t+1;
@If(t1>0;
@Do(
x:=@Integer(t1/7);
y:=t1/7;
@If(y-x>0;z:=x+2;z:=x+1);
@If(z=53;z:=1;z);
z
);
@Do(
1
))
)
)
weekend:=@Adjust(weekstart;0;0;6;0;0;0);
星期一:
@Text(weekstart;"D2")
week:=@Adjust(weekstart;0;0;1;0;0;0);
@Text(week;"D2")
week:=@Adjust(weekstart;0;0;2;0;0;0);
@Text(week;"D2")
week:=@Adjust(weekstart;0;0;3;0;0;0);
@Text(week;"D2")
week:=@Adjust(weekstart;0;0;4;0;0;0);
@Text(week;"D2")
week:=@Adjust(weekstart;0;0;5;0;0;0);
@Text(week;"D2")
week:=@Adjust(weekstart;0;0;6;0;0;0);
@Text(week;"D2")
3.计算任意一周的周一至周日
- Domino计算当前日期是这一年的第几周,以及计算任意一周都分别是哪七天?
- C#计算当前日期是一年中的第几周
- JS计算当前日期是一年中的第几周
- 计算当前周是一年中的第几周的函数
- 计算当前日期是任意时间段内第几周的函数
- 如何计算当前日期是当年的第几周?
- 计算当前日期是当年第几周的函数
- 计算当前日期是本年的第几周
- 计算当前日期是本年度的第几周
- .Net时间计算函数,统计某一天是一年的第几周,这一周从哪天开始到哪天结束
- .Net时间计算函数,统计某一天是一年的第几周,这一周从哪天开始到哪天结束
- 根据具体日期计算是一年的第几周和当月的第几周
- C#中怎么计算当前日期是在一年中的第几周
- C#中怎么计算当前日期是在一年中的第几周
- 根据日期计算当前日期所在周是日期所在年份的第几周
- 计算本周是一年中第几周
- 以周一为一周的第一天来计算当前时间是本月的第几周
- 根据日期计算属于第几周(周日是一周的第一天)
- g_main_loop_new (NULL, FALSE) 原理分析
- Oracle数据库中分区表的操作方法
- 关于clientHeight、offsetHeight、scrollHeight
- Linux页框管理
- Step by Step Create cxf+spring webservice based on Maven
- Domino计算当前日期是这一年的第几周,以及计算任意一周都分别是哪七天?
- 数字逻辑
- 文件删除后,如何恢复。
- ASP.NET执行 Button控件 OnClick事件之前进行 JS验证 通过之后执行服务器事件 不通过不执行
- 数据库表结构设计浅谈
- 一些比较重要的算法
- Oracle结构设计技巧
- CSDN有奖活动页面,主页上实在找不着~~
- android/ophone中本机号码的获取