PDA

View Full Version : مبتدی: اختلاف بین دو ساعت



vb-sosol
جمعه 08 بهمن 1389, 15:40 عصر
سلام
مثلا اگر ساعت 7:23:43 باشه میخوام از یک ساعت خاصی مثلا 15:33:09 اختلافش رو بدست بیاورم
لطفا راهنمائی کنید

quiet_programmer
جمعه 08 بهمن 1389, 17:46 عصر
با سلام.

برای اینکار میتونی از تابع DateDiff استفاده کنی.

شکل کلی این تابع به این شکله.


DateDiff(ByVal Interval As String
ByVal Date1 As DateTime, _
ByVal Date2 As DateTime, _
Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _
Optional ByVal WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _
) As Long


پارامتر اول یکی از حروف زیره که واحد تفریق رو مشخص میکنه.


String value
Unit of time difference

"d"
Day

"y"
Day

"h"
Hour

"n"
Minute

"m"
Month

"q"
Quarter

"s"
Second

"w"
Week

"ww"
Calendar week

"yyyy"
Year

پارامتر دوم اوپرند اول رو دریافت میکنه.
پارامتر سوم اوپرند دوم رو دریافت میکنه.
پارامتر چهارم و پنجم هم اختیاریه و متیونی خالیشون بزاری. و به ترتیب اولین روز هفته و اولین روز سال رو میگیره.

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

Dim datTim1 As Date = #7:23:43#
Dim datTim2 As Date = #15:33:09#
msgbox datediff("s",datTim1,datTim2)

Restlesa
جمعه 08 بهمن 1389, 19:47 عصر
حالا اگر بخوايم اختلا ساعت و دقيقه و ثانيه اش رو بدست بياريم بايد چي كار كنيم ؟؟؟؟
:متفکر::متفکر::متفکر::متفکر:: تفکر::متفکر::متفکر::متفکر::م فکر:

مثل بگه كه اختلاف 14:30:00 با 16:00:00 بشه 1:30:00

xxxxx_xxxxx
جمعه 08 بهمن 1389, 20:51 عصر
حالا اگر بخوايم اختلا ساعت و دقيقه و ثانيه اش رو بدست بياريم بايد چي كار كنيم ؟؟؟؟
وقتی اختلاف رو بر حسب ثانیه بدست آوردید میتونید با تقسیم های متوالی به hh:mm:ss تبدیلش کنید.

farzinf
شنبه 09 بهمن 1389, 17:49 عصر
دوست عزیز می تونی خودت تبدیل کنی به ثانیه از هم کم کنی و بعد دوباره به ساعت و دقیقه و ثانیه تبدیل کنی

ghasemweb
شنبه 09 بهمن 1389, 21:31 عصر
دوست عزیز می تونی خودت تبدیل کنی به ثانیه از هم کم کنی و بعد دوباره به ساعت و دقیقه و ثانیه تبدیل کنی
این روش خوبه ولی اگر فرمت 24 ساعت باشه جواب دقیق درمیاد.

vb-sosol
سه شنبه 12 بهمن 1389, 10:53 صبح
من نتونستم از این تابع استفاده کنم :ناراحت:

vb-sosol
سه شنبه 12 بهمن 1389, 16:59 عصر
دوستان کسی نیست بتونه کمکم کنه؟

ghasemweb
چهارشنبه 13 بهمن 1389, 01:05 صبح
سلام همونجور که مدیر بخش فرمودن باید از روش تبدیل به ثانیه استفاده کنید که یه منطق ریاضی نیاز بود تا به جواب برسید من در کد زیر این کار رو انجام دادم که نیازی به توضیح اضافی نیست

h = 16
m = 0
s = 0

h2 = 14
m2 = 30
s2 = 0

h3 = 0
m3 = 0
s3 = 0

t1 = (h * 3600) + (m * 60) + s
t2 = (h2 * 3600) + (m2 * 60) + s2
t3 = t1 - t2
h3 = t3 \ 3600
t3 = t3 - (h3 * 3600)
m3 = t3 \ 60
s3 = t3 - (m3 * 60)
MsgBox h3 & ":" & m3 & ":" & s3
باز اگر سوالی بود در خدمتیم

vb-sosol
چهارشنبه 13 بهمن 1389, 10:02 صبح
من اصلا نتونستم از تابع استفاده کنم
لطفا برنامه را اگه زحمتی نیست ضمیمه کنید

ghasemweb
چهارشنبه 13 بهمن 1389, 11:55 صبح
من اصلا نتونستم از تابع استفاده کنم
لطفا برنامه را اگه زحمتی نیست ضمیمه کنید

منظورت با کیه لطفا از نقل استفاده کنید!

vb-sosol
چهارشنبه 13 بهمن 1389, 14:48 عصر
دوست عزیز من نتونستم از تابعی که شما گذاشتید استفاده کنم
لطفا یک نمونه کد اگر زحمتی نیست برایم قرار دهید(ضمیمه کنید) تا بهتر متوجه شوم

AlgorithmX
چهارشنبه 13 بهمن 1389, 15:53 عصر
ببین دوست عزیز همونطور که ghasemweb (http://barnamenevis.org/member.php?109005-ghasemweb) فرمودند برای این که منظورت رو درست به کسی برسونی از نقل قول استفاده کن.


دوست عزیز من نتونستم از تابعی که شما گذاشتید استفاده کنم
وباید بگم که جناب ghasemweb (http://barnamenevis.org/member.php?109005-ghasemweb) از تابعی استفاده نکردند!! که نیاز به پروژه اون باشه!

vb-sosol
چهارشنبه 13 بهمن 1389, 18:56 عصر
با سلام.

برای اینکار میتونی از تابع DateDiff استفاده کنی.

شکل کلی این تابع به این شکله.


DateDiff(ByVal Interval As String
ByVal Date1 As DateTime, _
ByVal Date2 As DateTime, _
Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _
Optional ByVal WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _
) As Long


پارامتر اول یکی از حروف زیره که واحد تفریق رو مشخص میکنه.


String value
Unit of time difference

"d"
Day

"y"
Day

"h"
Hour

"n"
Minute

"m"
Month

"q"
Quarter

"s"
Second

"w"
Week

"ww"
Calendar week

"yyyy"
Year

پارامتر دوم اوپرند اول رو دریافت میکنه.
پارامتر سوم اوپرند دوم رو دریافت میکنه.
پارامتر چهارم و پنجم هم اختیاریه و متیونی خالیشون بزاری. و به ترتیب اولین روز هفته و اولین روز سال رو میگیره.

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

Dim datTim1 As Date = #7:23:43#
Dim datTim2 As Date = #15:33:09#
msgbox datediff("s",datTim1,datTim2)

این رو نتوستم استفاده کنم :متفکر:

یه نمونه سورس کامل با مثال بهم بدید لطفا

ghasemweb
چهارشنبه 13 بهمن 1389, 22:18 عصر
دوست عزیز مگه اون کدی که گذاشتم تو صفحه قبل جواب نداد ؟

_behnam_
چهارشنبه 13 بهمن 1389, 22:56 عصر
با سلام ؛
ببینید دوستان , این چیزی که مدنظر شماست فکر نکنم تابع خواصی داشته باشه , و فکر نکنم این کارو بشه با 2 تا خط کد انجام داد
بلکه کار پیچیده ای هستش و نیاز داره که همینجور واسش شرط گذاشته بشه
حالا من یه فایل رو واسه دوستمون که تاپیکو زده ضمیمه میکنم که یه نگاهی کنه بهش و حساب کلی کار بیاد دستش
در ضمن این سورسی که میزارم فقط تا دقیقه اختلاف رو نشون میده (اما درست) اختلاف ساعتی رو نشون نمیده

ghasemweb
جمعه 15 بهمن 1389, 23:18 عصر
با سلام ؛
ببینید دوستان , این چیزی که مدنظر شماست فکر نکنم تابع خواصی داشته باشه , و فکر نکنم این کارو بشه با 2 تا خط کد انجام داد
بلکه کار پیچیده ای هستش و نیاز داره که همینجور واسش شرط گذاشته بشه

چرا واسه یه بحث به این آسونی هی مشکل ایجاد میکنید مگه میخوایید سیستم عامل از نو بنویسیدhttp://barnamenevis.images/smilies/yahoo/129.gif.

دوست عزیز بد نیست قبل از جواب دادن کل تایپیک رو مرور کنید.فکر نکنم اون سورسی که بنده تو صفحه ی قبل گذاشتم مشکلی داشته باشه اگر باشه قابل بررسی و حله

_behnam_
شنبه 16 بهمن 1389, 02:13 صبح
چرا واسه یه بحث به این آسونی هی مشکل ایجاد میکنید مگه میخوایید سیستم عامل از نو بنویسیدhttp://barnamenevis.images/smilies/yahoo/129.gif.

دوست عزیز بد نیست قبل از جواب دادن کل تایپیک رو مرور کنید.فکر نکنم اون سورسی که بنده تو صفحه ی قبل گذاشتم مشکلی داشته باشه اگر باشه قابل بررسی و حله
دوست عزیز من از اول تاپیک رو مشاهده کرده بودم , هیچ سورسی رو ندیدم فقط کد بود که اون کد 3600:60:-12958200 رو نشون داد اگه شما میگید با اون کدا این کار امکانپذیره , لطفا ضمیمه کنید که دوستمون استفاده کنه

با تشکر /

ghasemweb
دوشنبه 18 بهمن 1389, 18:57 عصر
اگه بهتون برخورد معذرت میخوام

h = 16
m = 0
s = 0

h2 = 14
m2 = 30
s2 = 0

h3 = 0
m3 = 0
s3 = 0

t1 = (h * 3600) + (m * 60) + s
t2 = (h2 * 3600) + (m2 * 60) + s2
t3 = t1 - t2
h3 = t3 3600
t3 = t3 - (h3 * 3600)
m3 = t3 60
s3 = t3 - (m3 * 60)
MsgBox h3 & ":" & m3 & ":" & s3

مگه از این کد نمیشه به جواب رسید !!!