PDA

View Full Version : اشکال در اختلاف زمان



mfarhadi
شنبه 17 شهریور 1386, 08:30 صبح
می خواهم اختلاف تاریخ توقف(روز وساعت ) با تاریخ در سرویس قرار گرفتن (روز وساعت)را بر اساس ساعت حساب کند (مدت زمان از سرویس خارج بودن) فلان قدر ساعت = ( تاریخ توقف) - ( تاریخ در سرویس قرار گرفتن) date2-date4 , date3-date5 بعد حاصل بدست آمده با هم جمع شود البته بر اساس ساعت

mfarhadi
شنبه 17 شهریور 1386, 08:36 صبح
خواهشمند است اگر کسی در این زمینه اطلاعاتی دارد کمکم کند خیلی خیلی به کمک تان نیاز دارم

mehdihamedali
شنبه 17 شهریور 1386, 15:03 عصر
دوست عزیز سئوال خود را واضح تر بگویید
تاریخ در سرویس قرار گرفتن و توقف اشیاء موجود در برنامه خودتان است یا چیز دیگه، تاریخ شما شمسیه یا میلادی
اگر درست فهمیده باشم اگه تاریخ شما میلادی باشه میتونید از تابع DateDiff استفاده کنید اگر هم تاریخ شما شمسیه یا باید یک ماژول بنویسید که این محاسبه رو انجام بده (اگر خواستید در این زمینه راه نماییتون میکنم) یا تاریخ های شمسی رو یا ماژول های تبدیل تاریخ، که این روز ها عین گل همه جا هست تبدیل به میلادی کنید بعد از تابع DateDiff استفاده کنید
این اصل تابع


Public Overloads Function DateDiff( _
ByVal Interval As [ DateInterval | 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

این هم یک مثال


Dim firstDate, msg As String
Dim secondDate As Date
firstDate = InputBox("Enter a date")
secondDate = CDate(firstDate)
msg = "Days from today: " & DateDiff(DateInterval.Day, Now, secondDate)
MsgBox(msg)

mehdihamedali
دوشنبه 19 شهریور 1386, 00:29 صبح
بیبین دوست عزیز یک تابع (ماژول) برای تبدیل تاریخ شمسی به میلادی پیدا کن بعد تاریخ ها تو به میلادی تبدیل کن بعد مثل دستورات زیر اختلافشون رو پیدا کن
MDate تابع تبدیل شمسی به میلادیه منه بدون سپلیتور
DateDiff تابع مورد نظر که تاریخ d1 رو با تاریخ d2 مقایسه میکنه



Dim d1, d2, TD As String

d1 = Mid(MDate(Me.DATe2), 1, 4) & "/" & Mid(MDate(Me.DATe2), 5, 2) & "/" & Mid(MDate(Me.DATe2), 7, 2)
d2 = Mid(MDate(Me.DATe4), 1, 4) & "/" & Mid(MDate(Me.DATe4), 5, 2) & "/" & Mid(MDate(Me.DATe4), 7, 2)

TD = DateDiff("d", d1, d2)
MsgBox TD

انگوران
دوشنبه 19 شهریور 1386, 06:14 صبح
دوست عزیز با فرض اینکه تاریخ از نوع تکست و ماسک 00/00/00 باشه ممکنه یه نومنه فایل از عملیات فوق رو اینجا بذاری .

mehdihamedali
دوشنبه 19 شهریور 1386, 08:41 صبح
دوست عزیز انگوران جان
اگر تاریخ شما شمسی با فرمت 00/00/00 باشه و خود سپلیتور ها "/" هم ذخیره شده باشند شما باید تابعی (ماژولی) بنویسی تا این تاریخ شما را به میلادی تبدیل کنه حالا اگر تاریخ میلادی شما سپلیتور داشت ولی 20 یا 19 رو نداشت شما خودت اضافه کن و از تکه برنامه بالا استفاده کن اگر داشت به صورت مستقیم و بدون تغییر استفاده کن
نکته: تاریخ با فرمت yyyy برای این تابع شناخته شده است و هر تاریخ با غیر این فرمت امکان داره در محاسبه اشتباه بوجود بیاد ماشین هم که آدم نیست اینارو بفهمه
توضیح بیشتر خواستی بگو بگم یا نمونه بذار ببینم

انگوران
دوشنبه 19 شهریور 1386, 10:33 صبح
دوست عزیز ضمن تشکر من یه مثالی می خواستم که همون ماژولی که فرمودین بعلاوه کدهائی که زحمت کشیدین بعلاوه روش معقول استفاده از فیلد و ... رو داشته باشه . اگه زحمتی بکشین و فایل رو اینجا بذارین ممنون میشم .

mehdihamedali
دوشنبه 19 شهریور 1386, 21:40 عصر
http://www.ehramparsian.com\tav1.rar