PDA

View Full Version : تبدیل ساعت به دقیقه



Microsoft
سه شنبه 22 مهر 1382, 08:27 صبح
با سلام

به چه شکل میتونم ساعت رو به دقیقه تبدیل کنم ؟

مثلا دو مقدار ساعت داریم از هم کم میکنیم و مقداری که بدست میاد فاصله بین این دو زمان خواهد بود . حالا به چه شکل میشه این مقدار رو به دقیقه تبدیل کرد ؟

مثلا ساعت 8:00:00 رو از ساعت 10:00:00 کم میکنیم حاصلش میشه 2:00:00 حالا چطوری این حاصل رو به دقیقه تبدیل کنیم ؟ یعنی 120 .

با تقدیم احترام .

Behzad_Asharkhan
سه شنبه 22 مهر 1382, 10:34 صبح
سلام

با فانکشن StrToTime میتونی یه ساعت این فرمی 12:13:14 رو به TDateTime تبدیل کنی.
بعدش با این

procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word);
به تمام جزئیات دسترسی داری و حالا کمی ضرب و تقسیم
بعد با این فانکشن دوباره TdateTime درست میکنی

function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;
و بعد TimeToStr و تمام

باید SysUtils رو Use کنی

موفق باشی

Mashatan
سه شنبه 22 مهر 1382, 11:02 صبح
میدونید که TDateTime از نوع Double هست و خوب همین کار ما رو ساده میکنه !!
این یک مثال ساده برای فهمیدن مقدار زمان Process هست به جای Now میتونید زمان خودتون وارد کنید و Process رو حذف کنید


var
Start,EndT:TDateTime;
Str:String;
Begin
Start:=Now;
Process;
ENDT:=Now;
Start:=EndT-Start;
DateTimeToString(str,'hh:nn:ss',Start);
end;

در مورد قسمت دوم سئوال هم تابع MinuteOfTheHour و MinuteOfTheDay رو یک نگاه بنداز !

Microsoft
پنج شنبه 24 مهر 1382, 10:02 صبح
با سلام خدمت دوستان عزیز

لطفا به این کدها توجه کنید :


// Full Unit code.
// -----------------------------------------------------------
// You must store this code in a unit called Unit1 with a form
// called Form1 that has an OnCreate event called FormCreate.

unit Unit1;

interface

uses
SysUtils, // Unit containing the DecodeTime command
DateUtils,
Forms, Dialogs;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
end;

var
Form1: TForm1;

implementation
{$R *.dfm} // Include form definitions

procedure TForm1.FormCreate(Sender: TObject);
var
myDate : TDateTime;
myHour, myMin, mySec, myMilli : Word;

begin
// Set up the myDate variable to have a December 2000 value
myDate := StrToDateTime('29/12/2000 12:45:12.34');

// Now add 5 minutes to this value
myDate := IncMinute(myDate, 5);

// And let us see what we get
DecodeTime(myDate, myHour, myMin, mySec, myMilli);
ShowMessage('Time now = '+TimeToStr(myDate));
ShowMessage('Hour = '+IntToStr(myHour));
ShowMessage('Minute = '+IntToStr(myMin));
ShowMessage('Second = '+IntToStr(mySec));
ShowMessage('MilliSec = '+IntToStr(myMilli));
end;

end.

حاصل این کد طبق اطلاعات این web Page باید این باشه :


Time now = 12:50:12
Hour = 12
Minute = 50
Second = 12
MilliSec = 34

اما این چنین نیست و مقادیر ساعت - دقیقه - ثانیه و میلی ثانیه رو برابر صفر بر میگردونه . لطفا راهنمایی بفرمایید .

متشکرم .

Gladiator
شنبه 26 مهر 1382, 09:07 صبح
با سلام

به این ترتیب عمل کنید :


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit7: TEdit;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

Function TimeDeltaInMinutes(
StartDate : TDateTime;
EndDate : TDateTime): Double;

begin

end;
procedure TForm1.Button1Click(Sender: TObject);
Var
Hour : Word;
Min : Word;
Sec : Word;
MSec : Word;
Delta : TDateTime;
starttime,endtime : tdatetime;
Begin
starttime := strtotime(edit1.Text);
endtime := strtotime(edit2.Text);
Delta := starttime - endtime;
DecodeTime(Delta, Hour, Min, Sec, MSec);
edit7.Text:= timetostr(starttime - endtime);
edit3.Text:= IntToStr(Hour);
edit4.Text:= IntToStr(Min);
edit5.Text:= IntToStr(Sec);
edit6.Text:= FloatToStr(strtoint(edit3.Text)*60+min);
End;



end.

موفق باشید .