PDA

View Full Version : subtract datetime



miimii
دوشنبه 23 بهمن 1385, 15:25 عصر
با سلام
من در Table یک فیلد دارم از نوع datetime که allow null است.
یک متغیر هم در برنامه دارم از نوع datetime که زمان جاری را در ْآن ذخیره می کنم.
چگونه می توانم مقدار این دو را از هم کم کنم؟؟

با تشکر

zerobit-ltd
دوشنبه 23 بهمن 1385, 18:28 عصر
شما اول باید مقداری رو که از database می خونید رو به datetime توی net. تبدیل کنید، بعد عمل موردنظرتون رو انجام بدبد.
فقط حواستون باشه که مقادیر null رو که از سمت database میان رو چک کنید تا مشکلی رخ نده.

behzad_gh
دوشنبه 23 بهمن 1385, 22:19 عصر
Dim date1, date2 As DateTime
date1 = New DateTime(2006, 1, 1)
date2 = DateTime.Now
Dim ts As TimeSpan = date2.Subtract(date1)
Dim days As Integer = ts.Days

miimii
سه شنبه 24 بهمن 1385, 09:06 صبح
با سلام.
دوست عزیز میشه لطفا در مورد کد توضیح دهید.
فرمت time span چیست و دیگر اینکه چون یکی از Datetime های من مقداری است که در table وجود دارد که allow null است ممکن است null باشد.
لذا در هنگام عمل تفریق با خطای cast type مواجه می شود.
لطفا مرا راهنمایی کنید
با تشکر

behzad_gh
چهارشنبه 25 بهمن 1385, 20:56 عصر
سلام . TimeSpan فرمت خاصی برای تاریخ است تا بتوان تاریخ ها را با هم مقایسه یا کم و زیاد کرد.
برای مثال خروجی دستور (MessageBox.Show(ts.ToString به صورت زیر است :
349.14:32:44.1937760
که نشان دهنده :
* 349 روز
* 14 ساعت
* 32 دقیقه
* 44 ثانیه
* 1937760 میلی ثانیه می‌باشد.
همچنین timespan دارای خصوصیات و متدهای مختلفی برای بدست آوردن مقادیر گوناگون مانند ساعت کل ، دقیقه کل و ... به شرح ذیل می‌باشد.


* Add: Add another TimeSpan to it.
* Days: Return the day portion of the TimeSpan value.
* Duration: Retrieve the absolute value of the TimeSpan.
* Hours: Return the hour portion of the TimeSpan value.
* Milliseconds: Return the millisecond portion of the TimeSpan value.
* Minutes: Return the minute portion of the TimeSpan value.
* Negate: Retrieve the negated value of the current instance.
* Seconds: Return the second portion of the TimeSpan value.
* Subtract: Subtract another TimeSpan from it.
* Ticks: Return the TimeSpan value as ticks.
* TotalDays: Return the TimeSpan value as days.
* TotalHours: Return the TimeSpan value as hours.
* TotalMilliseconds: Return the TimeSpan value as milliseconds.
* TotalMinutes: Return the TimeSpan value as minutes.
* TotalSeconds: Return the TimeSpan value as seconds

در مورد خطای Cast type شما باید قبل از اینکه از این دستور استفاده نمایید مقدار متغیر تاریخ را چک کنید که null نباشد و اگر Null بود دو تاریخ را از هم کم نکنید.

موفق باشید.

miimii
شنبه 28 بهمن 1385, 08:29 صبح
دوست عزیز در مورد cast Type مشکلم حل شد.ممنون
ولی هنوز درمورد timspan سوال دارم.
اینکه اگر بخواهیم عملیاتی بر روی تاریخ انجام دهیم باید از نوع timespan تعریف کنیم نه datetime درست است؟
اگر جواب سوال من منفی است پس چه فرقی بین timespan و datetime وجود دارد؟

behzad_gh
شنبه 28 بهمن 1385, 13:37 عصر
نیازی نیست که متغییرها رو از نوع Timespan تعریف کنید . هر زمان که نیاز به گرفتن فاصله دو تاریخ (datetime) دارید از timespan استفاده می‌کنید در حقیقت فرق بین این دو در این است که Datetime برای نمایش یک لحظه زمانی است ولی timespan برای نمایش فواصل زمانی .