发现一个问题,提醒delphi开发的同事们注意。
使用TwwDBDateTimePicker控件时,请不要使用wwDBDateTimePicker1.Date + 0.999999的方式来统计,必须要用Trunc(wwDBDateTimePicker1.Date) + 0.99999
不然容易出现像报表系统那样,多统计一天的问题。至于什么原因,大家可以看代码:
[delphi]procedure TForm1.Button1Click(Sender: TObject); begin wwDBDateTimePicker1.DateTime := Now; ShowMessage(FormatDateTime('yyyy-mm-dd hh:nn:ss', wwDBDateTimePicker1.Date)); end; [/delphi]
所以wwDBDateTimePicker1.Date的格式不一定就是yyyy-mm-dd,盲目的+0.999999是错误的。而且错误隐蔽性很高,查了我一个早上。
23.9998/24
在日期的加减上,0.999999跟1是一样的效果。
那也是不对的,必须要先把wwDBDateTimePicker1.Date的值Trunc一下。
date应该是整型的吧?还没验证过呢。
不是的。
这个以前就知道了。
还有什么显示格式什么的,最后用formatdatetime
所以说隐蔽性很强,不容易发现。
对,我个人不建议使用DateToStr或者DateTimeToStr这两个函数,尽量用FormatDateTime
是的,DatetoStr会受制于操作系统的日期格式。