关于时间的计算(200分)

  • 主题发起人 主题发起人 goldbaby
  • 开始时间 开始时间
G

goldbaby

Unregistered / Unconfirmed
GUEST, unregistred user!
求1、两个日期相减的函数,返回秒数?
2、如何做到日期加偏移量得到新时间?
求详细代码?
 
算时间在delphi中是最容易的,如下:
var StartT,EndT : TDateTime
其实Tdatetime是一个双精度的浮点数,它的小数点前表示天数:
1. 两个日期相减,返回秒数: ( EndT-StartT)*24*3600
第二个还用再说嘛,呵呵
 
procedure TForm1.Button1Click(Sender: TObject);
var
StartTime, StopTime, Difference : TDateTime;
begin
StartTime :=Now;
//当前日期
StopTime :=Now+8;
//令一个日期
Difference := StopTime - StartTime;
Edit1.Text :=FloatToStr(Difference*24*3600);
end;

来晚了,^_^
 
问题一
var
d:do
uble;
d1, d2:TDateTime;
begin
d1 := '2001-12-12 12:12:00'
d1 := '2001-12-04 12:11:32'
d := d1 - d2
showmessage(inttostr(round(d*24*60*60 + 0.5)));
end
问题2
和问题一样处理拉
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
function time1(A:Tdatetime;B:Tdatetime):integer;
begin
result:=strtoint(FloatTostr(A-B));
end;
function newtime(A:Tdatetime;B:integer):TDateTime;
begin
result:=(A+(B/24*3600));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
label1.caption:=FloatToStr(time1(time,time-1*24*3600));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
label1.caption:=datetimetostr(newtime(time,1000));
end;

end.
 
function TimeSub(const a, b: TDateTime): DWord;
begin
Result:=Abs(a-b)*MSecsPerDay div 1000
end
 
可爱的各位兄弟,谢谢了,但是我的问题写的不清楚,
我问的是java里的时间计算,我的问题分类是在JSP/SERVLET。
有劳各位,非常感谢。
 
孔雀开屏,自作多情
 
procedure TForm1.Button1Click(Sender: TObject);
var
StartTime, StopTime, Difference : TDateTime;
begin
StartTime :=Now;
//当前日期
StopTime :=Now+10;
//另一个日期,当前日期加偏移量得到
Difference := StopTime - StartTime;
//两个日期相减
Edit1.Text :=FloatToStr(Difference*24*3600);
//得到秒数
end;
 
请问在JSP中,字符串转换为日期采用什么方法?
 
这不是JSP中的方法吧
 
1: 参见java.util.Calendar的说明。
或者你用getMilliseconds得到毫秒数相减。
2: 还是Calendar类。
用 cal.set(Calendar.DAY_OF_MONTH,value);
value从原来的cal抓出来,在加上天数。你可以不考虑跨月。
3.
public String getTimeString() {
df=DateFormat.getTimeInstance(DateFormat.MEDIUM,locale);
df.setTimeZone(timeZone);
return df.format(cal.getTime());
}
or:
private String getCustomString(String format) {
SimpleDateFormat sdf=new SimpleDateFormat(format);
sdf.setTimeZone(timeZone);
return sdf.format(cal.getTime());
}
 
看看这时没有楼上的麻烦:
Date.parse(“日期”) 转化日期字符串为自从公元以来的毫秒数
两个毫秒相减再*1000不就是秒了吗?
第二个就直接相减得了。
有关日期的函数,我帮你贴在这里,请去看看:
http://218.77.39.97/jingying/bbs/dispbbs.asp?boardid=17&id=52
 
uses DateUtils;
...
var
sec: Integer;
Time1,Time2: TDateTime;
...
sec := SecondsBetween(Time1, Time2);
 
Tdatetime是一个双精度的浮点数,它的小数点前表示天数:
1> (d1-d2) *24*60*60
2> d1 + ddd(偏移量)
 
同 卷起千堆雪tyn
 
多人接受答案了。
 
后退
顶部