نمایش نتایج 1 تا 8 از 8

نام تاپیک: محاسبه زمان

  1. #1

    محاسبه زمان

    با سلام خدمت همه دوستان عزیز

    چطوری میشه مدت زمان بین 2 ساعت خاص رو محاسبه کرد ؟

    مثلا 3 تا ادیت باکس داریم . به این شکل عمل میکنیم .

    اول کلیدی رو میفشاریم و این فرمان اجرا میشه :

    edit1.text:=datetimetostr(time);


    بعد کلید دومی را میفشاریم و این فرمان اجرا میشه :

    edit2.text:=datetimetostr(time);

    تا اینجا خیلی راحته و چیزی نیست ولی میخوایم زمان بین فشره شدن این 2 کلید رو محاسبه کنیم و به متن ادیت 3 بدیم :

    edit3.text:= ????????????


    ضمنا این مقدار که به ادیت 3 داده میشه باید بصورت عددی باشه ( Integer ) چون بعدا میخواد بروش عملیات ریاضی انجام بشه . ممنونم .
    لطفا راهنمایی بفرمایید .

  2. #2
    با عرض ادب:
    خدمت جناب Microsoft عزیز عرض کنم که 3 سال پیش که می خواستم برنامه تبدیل تاریخ شمسی به میلادی رو بنویسم کلی در مورد انواع تاریخ و زمان ها و طریقه نگه داری شون مطلب جمع کردم.
    مرسوم ترین روش برای نگه داری تاریخ و زمان (که یک مدل آن در ویندوز استفاده می شود و آنطور که به یاد دارم کنم دلفی هم مشابه همین عمل می کند) این است که مثلا مجموع میلی ثانیه های گذشته از یک مبدا زمانی (مثلا اول ژانویه 1900) را در یک عدد صحیح بزرگ ذخیره می کنند. لذا با یک تفریق ساده مشکل شما حل می شود. یک مدل دیگر آن هم که باز در ویندوز موجود است این است که سال و ماه و دقیقه و ساعت و ثانیه را در یک Record یا Structure ذخیره می کنند که در این مورد کاربردی ندارد(در API ویندوز دستورات کار و تبدیل آن ها موجود است)
    در دلفی مثل اینکه اینگونه باشد که در یک متغیر اعشاری که قسمت صحیح آن تعداد روز های گذشته از مبدا زمانی و قسمت اعشاری کسر گذشته از روز است این کار صورت می پذیرد.
    TDateTime در دلفی این کار را انجام می دهد و خیلی هم کامل است. دو زمان را بگیرید(اگر اشتباه نکنم با تابع Now) واز هم کم کنید. قسمت صحیح تعداد روز بین دو زمان و قسمت اعشاری کسری از روز است که بین دو زمان سپری شده.
    متاسفانه اینجا دلفی ندارم اگر مشکل حل نشد بفرمایید source تقدیم کنم.

    یه عشق برنامه نویسی خفن

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    تهران
    پست
    484
    اگر فقط می‌خواهید میزان گذشت زمان بین دو رویداد را محاسبه کنید بهتر از از تابع GetTickCount ویندوز استفاده کنید. این تابع زمان گذشته از شروع ویندوز را بر حسب میلی ثانیه برمی‌گرداند.

  4. #4

    Re: محاسبه زمان

    :!:
    نقل قول نوشته شده توسط آقای Microsoft عزیز
    edit1.text:=datetimetostr(time);


    edit2.text:=datetimetostr(time);
    غلطه ای غلطه! :wink:
    برای اینکه تابع Time فقط مقدار ساعت را برمی گرداند و dateTimeToStr هم تاریخ و هم ساعت را که در نتیجه یک تاریخ اشتباه نشان داده می شود
    که برای نشان دادن ساعت تنها می توان:
     Edit1.Text:= TimeToStr(Time);

    یا برای گرفتن تاریخ و ساعت از Now به جای Time استفاده کرد
    //××××××××××××××××××××××××× ×××××××××××××××××
    برای نمایش مدت زمان بین دو تا ساعت خاص:


    var
    StTime,EndTime:TDateTime;

    //***********************


    procedure TForm1.Button1Click(Sender: TObject);
    begin
    StTime:=Now;
    Edit1.Text:=DateTimeToStr(StTime);
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    EndTime:=Now;
    Edit2.Text:=DateTimeToStr(EndTime);
    Edit3.Text:=IntToStr(Round(24.0*60.0*1 000.0*(EndTime-StTime)));
    end;


    موفق باشید

  5. #5
    آقایون از لطف شما متشکرم .

    غلطه آی غلطه !

    دوست خوشگلم . من زدم همچی یه چیزایی نشون داد . نمیدونستم غلطه . ممنونم از راهنمایی شما .

    آقای محیط دلفی از شما هم سپاسگذارم .

    آقای shaniaki از شما هم خیلی خیلی ممنونم . لطف کردی .

    با تشکر .

  6. #6
    کاربر دائمی آواتار behnam_dr
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    مشهد
    سن
    41
    پست
    133
    در پاسخ به این سوال که ، چطوری میشه مدت زمان بین 2 ساعت خاص رو محاسبه کرد ؟
    من یه کد ابتکاری نوشتم که این کارو انجام میده (دقیقه و ساعت رو کامل عنوان میکنه)
    procedure TForm1.Button1Click(Sender: TObject);
    var x,y:TDateTime;
    Min:integer;
    begin
    x:=strtotime(edit2.Text);
    y:=strtotime(edit3.text);
    Min:=(Round(24.0*60.0*(x-y)));
    Label4.Caption:=inttostr(min div 60)+':'+inttostr(min mod 60);
    end;
    سپاسگذارم

  7. #7
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    می توانی ساعت را تبدیل به دقیقه کنی و سپس از هم کم کرده و دوباره به ساعت تبدیل کنی.
    موفق باشید

  8. #8
    آقایون، تاریخ پست را دقت کردید؟! از سال 82 تا سال 86 چند روز فاصله هست؟!!


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •