关于Delphi 输入年月日 求输出星期
发布网友
发布时间:2022-05-10 17:32
我来回答
共5个回答
热心网友
时间:2023-10-19 06:23
直接用Delphi组件面板(Win32选项卡)上的日期选择组件:DateTimePickerk,这个更方便,也不用你去管2月份是28天还是29天。
然后,再看一看下面我写的代码:
procere TForm1.Button1Click(Sender: TObject);
var s:string;
begin
case DayofWeek(DateTimePicker1.Date) of
1: s:='星期日';
2: s:='星期一';
3: s:='星期二';
4: s:='星期三';
5: s:='星期四';
6: s:='星期五';
7: s:='星期六';
end;
edit1.text:=DateToStr(DateTimePicker1.Date)+' '+s;
end;
就OK 了。
热心网友
时间:2023-10-19 06:23
为什么不用dayofweek()呢?这个现成的函数也是有算法的:
function DayOfWeek(const DateTime: TDateTime): Word;
begin
Result := DateTimeToTimeStamp(DateTime).Date mod 7 + 1;
end;
function DateTimeToTimeStamp(DateTime: TDateTime): TTimeStamp;
asm
PUSH EBX
{$IFDEF PIC}
PUSH EAX
CALL GetGOT
MOV EBX,EAX
POP EAX
{$ELSE}
XOR EBX,EBX
{$ENDIF}
MOV ECX,EAX
FLD DateTime
FMUL [EBX].FMSecsPerDay
SUB ESP,8
FISTP QWORD PTR [ESP]
FWAIT
POP EAX
POP EDX
OR EDX,EDX
JNS @@1
NEG EDX
NEG EAX
SBB EDX,0
DIV [EBX].IMSecsPerDay
NEG EAX
JMP @@2
@@1: DIV [EBX].IMSecsPerDay
@@2: ADD EAX,DateDelta
MOV [ECX].TTimeStamp.Time,EDX
MOV [ECX].TTimeStamp.Date,EAX
POP EBX
end;
热心网友
时间:2023-10-19 06:24
估计你是想做一个日历之类的吧。 我以前根据某网站的一个js转换出的这个pas应该可以帮你。
到我的主页去看吧。
http://hi.baidu.com/yangyxd
热心网友
时间:2023-10-19 06:25
直接用时间控件不是很简单么????
热心网友
时间:2023-10-19 06:25
dayofweek()