如何取出一个星期的某一天是几号?(50分)

  • 主题发起人 风中的狼
  • 开始时间

风中的狼

Unregistered / Unconfirmed
GUEST, unregistred user!
哪个星期?delphi的calender看看
 
uses Windows, Messages, Classes, SysUtils, DateUtils;

//下面的函数可以得到第几周的星期一和星期天的datetime值,
//输入年nYear, 周数nWeekNO, 输出 星期一是那一天,星期天是那一天
//你改一下就可以得到你要的东本
procedure GetMyWeekDays(nYear, nWeekNo: integer;
var dtMonday, dtSunday: TDatetime);
var
i ,j : integer;
nInitDays : integer;
//今天是今年的第几天
nSurplusDays : integer;
nDaysInThismonth : integer;
begin
nInitDays :=(nWeekNo-1)*7+2-DayOftheWeek(StrToDatetime(IntToStr(nYear)+'-01-01'));
nSurplusDays :=nInitDays;
for i :=1 to 12do
begin
nDaysInThismonth := DaysInMonth(StrToDatetime(IntToStr(nYear)+'-'+IntToStr(i)+'-01'));
if nSurplusDays > nDaysInThismonth then
nSurplusDays:=nSurplusDays - nDaysInThismonth
else
break;
end;

if nWeekNo>1 then
//如果不是第一周
dtMOnday := StrToDatetime(IntToStr(nYear)+'-'+IntToStr(i)+'-'+IntToStr(nSurplusDays))
else
//如果是第一周
dtMOnday := StrToDatetime(IntToStr(nYear)+'-01-01');
// showmessage('第'+intToStr(nNo)+'周的星期一是' + DatetimeToStr(dtMOnday));
nSurplusDays :=nInitDays+6;
for j :=1 to 12do
begin
nDaysInThismonth := DaysInMonth(StrToDatetime(IntToStr(nYear)+'-'+IntToStr(j)+'-01'));
if nSurplusDays > nDaysInThismonth then
nSurplusDays:=nSurplusDays - DaysInMonth(StrToDatetime(IntToStr(nYear)+'-'+IntToStr(j)+'-01'))
else
break;
end;
dtSunday := StrToDatetime(IntToStr(nYear)+'-'+IntToStr(j)+'-'+IntToStr(nSurplusDays));
// showmessage('第'+intToStr(nNo)+'周的星期天是' + IntToStr(nYear)+'年'+IntToStr(j)+'月'+IntToStr(nSurplusDays)+'日');
end;
 
to:htw
是我问题中没有说清楚!
比方说今天是2001年8月15日,我要想取出下星期某一天的日期,且具体是星期几得由程序
运行时的用户决定!
请问应该怎么办?
 
老大:htw的源码你看不懂吗???
 
to:dingbaosheng
htw的源码能看懂啊!
问题是我编写时根本就不知道用户想要取出的是哪一天以后的哪一个星期几!
编程思想如下:
我是在为我们单位编写一个数据库系统。
其中牵涉到数据库的定时自动备份问题。
自动备份设置界面上使用了四个Edit控件,分别为Edit1(首次自动备份日期),
Edit2(自动备份时间间隔),Edit3(下次在星期几备份),Edit4(自动备份时间)。
实际运行时将Edit1、Edit2、Edit3、Edit4中的内容写入INI文件,比如:
自动备份时间=2001-08-15
自动备份间隔=Week,5(又或者是3Week,5,由Edit2,Edit3中的内容决定)
自动备份时间=12:00:00
然后当首次备份结束后,由程序根据“自动备份间隔”中的内容改写“自动备份时间”。
请赐教!
不好意思!
 
不按星期备份行吗?只记日期不就得了,省事儿
 
是你想得太复杂啦,由自动备份时间即可得出Edit1为星期几,将Edit2转换成天数,加上Edit3的天数,
减去Edit1的星期数。仔细想想就OK啦
 
有时,想得太复杂了,反面忽略了简单的方法。
 
顶部