PDA

View Full Version : سوال: محاسبه مدت بین دو تاریخ



رزابرنامه یاب
دوشنبه 23 مرداد 1391, 15:55 عصر
چه جوری میشه دو تا تاریخو از هم کم کرد؟ مثلا فاصله ی بین تاریخ خروج و تاریخ ورود رو میشه حساب کرد؟
من از split استفاده کردم برای جداسازی سال و ماه و روز. روزا رو میشه از هم کم رد.. اما اگه سال ها هم با هم فرق داشته باشن رو نتونستم...

ببخشید شاید سوالم خیلی مبتدی باشه . ولی خوب نتونستم حلش کنم دیگه....

کسی میتونه راهنماییم کنه؟؟ مرسی

mohsen_f_b
دوشنبه 23 مرداد 1391, 16:17 عصر
سلام

با دستور TimeSpan می توانید 2تاریخ را از هم کم کنید.

DateTime departure = new DateTime(2010, 6, 12, 18, 32, 29);
DateTime arrival = new DateTime(2010, 6, 15, 22, 47, 0);
TimeSpan travelTime = arrival - departure;
//int i =int.Parse(travelTime.Days);
Response.Write(travelTime.Hours);

موفق باشید

رزابرنامه یاب
دوشنبه 23 مرداد 1391, 17:16 عصر
سلام

با دستور TimeSpan می توانید 2تاریخ را از هم کم کنید.

موفق باشید

ممنون. فقط یه سوال اینکه تاریخ های ورودی من شمسی هستند و ساعتم ندارن. مثلا تاریخ ورود به شکل 1391/01/25 هستش. و با / جدا شدن.
حال هنگام اجرای برنامه من تاریخ رو از یه تقویم انتخاب کرده که با انتخاب تاریخ موردنظر ، تاریخ در تکست باکس مربوطش میشینه. من اینطوری نوشتمش.

DateTime aa = new DateTime(txt_datein.Text);
DateTime bb = new DateTime( txt_dateout.Text);
TimeSpan cc = bb - aa;
Label120.Text = cc.Days.ToString();
که البته نادرسته ومیگه که باید long وارد کنم. نه string
Argument '1': cannot convert from 'string' to 'long'
تاریخم که نمیشه long کرد...
میشه راهنمایی کنید چه کنم؟

رزابرنامه یاب
دوشنبه 23 مرداد 1391, 17:55 عصر
سلام

با دستور TimeSpan می توانید 2تاریخ را از هم کم کنید.


من کد رو به حالت زیر تغییر دادم

DateTime aa= DateTime.Parse(txt_datein.Text);
DateTime bb = DateTime.Parse(txt_dateout.Text);
TimeSpan cc = bb - aa;
Label120.Text = (cc.Days +1).ToString();
درسته ها اما خوب متوجه ماه های 30 و 29 و 31 روزه نمیشه...
میشه راهنماییم کنید.........ممنون

mohsen_f_b
سه شنبه 24 مرداد 1391, 09:00 صبح
سلام

دوست عزیز شما باید اول تاریخ را به میلادی تبدیل و از هم کسر و دوباره شمسی و نمایش دهید. با این کار اون مشکل 29-30-31 روز حل می شود.

موفق باشید

رزابرنامه یاب
سه شنبه 24 مرداد 1391, 11:30 صبح
سلام

دوست عزیز شما باید اول تاریخ را به میلادی تبدیل و از هم کسر و دوباره شمسی و نمایش دهید. با این کار اون مشکل 29-30-31 روز حل می شود.

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

h_r_sh
سه شنبه 24 مرداد 1391, 12:55 عصر
یکی از راه های تبدیل تاریخ، استفاده از dll های آقای هادی اسکندری هست.

FarsiLibrary.Utils.PersianDateConverter.ToPersianD ate(DateTime.Now).ToString("D");

رزابرنامه یاب
پنج شنبه 26 مرداد 1391, 17:05 عصر
سلام

دوست عزیز شما باید اول تاریخ را به میلادی تبدیل و از هم کسر و دوباره شمسی و نمایش دهید. با این کار اون مشکل 29-30-31 روز حل می شود.


ببخشید این مشکلم حل شد.. اما یه سوال دیگه... من میخوام تاریخ فعلی رو از یه تاریخی کم کنم و به فاصله ی ساعتش نیاز دارم... هر دو تاریخ شمسی اند.که اگه قمری کنم ساعتا میپرن چون در د تبدیل شمسی به قمری ای که یافتم فقط تاریخه و ساعت نقش نداره..
حالا اگه بخوام شمسی کار کنم:
اگه دات بزنم و hour رو انتخاب کنم ، اصلا ساعتو درست حساب نمیکنه، مثلا 3 روز گذشته و با day درست میگه 3 روز اما با hour درست حساب نمیکنه..مگه نه اینکه 3 روز بیشتر از 24 ساعته؟؟!!!!
وقتی میخواد تفاوت ساعتو حساب کنه از روز حاضر همرا ه ساعتش از روز موردنظر با توجه به ساعتش مگه کم نمیکنه؟؟؟!!!
من نیاز دارم بگه اگه بیشتر از 24 یا حالا 12 ساعت شد پیغام خطا بده ... اما ساعته درست نیست...
شما می تونید بازم راهنمایم کنید؟؟ با سپاس فراوان

saeed_sho
پنج شنبه 26 مرداد 1391, 19:07 عصر
تبدیل از میلای به شمسیو میدونم اما برعکسشو نه.. شما میدونید؟
تاریخ شمسی رو بصورت string باید بزاری داخل پرانتز
Dim dt As DateTime = DateTime.Parse(shamsiDate)

رزابرنامه یاب
پنج شنبه 26 مرداد 1391, 22:37 عصر
تاریخ شمسی رو بصورت string باید بزاری داخل پرانتز
Dim dt As DateTime = DateTime.Parse(shamsiDate)
با کد بالا قمری میشه؟
من از یه تابع تبدیل شمسی به قمری استفاده کرم که به نظرم ساعتو حذف میکنه ، یعنی تابعه انگار فقط مخصوص تاریخه و به ساعت توجهی نمیکنه. چون اختلاف ساعت 0 میشه.
این کار رو انجام دادم قبلش (از datetime.parse که گفتیداستفاده کردم) با این وجود در محاسبه اختلاف ساعت مشکل داره
ممنون میشم بازم راهنماییم کنید..شرمنده خستتون کردم

p.parsaee
پنج شنبه 26 مرداد 1391, 23:03 عصر
shamsiDate به هر فرمتي ذخيره شده باشه مثلا

1391/2/8 10:2:9

مي تونيد با متد substring از متغير shamsidate تاريخ رو از زمان جدا كنيد. بعد كه جدا شدن هر كدوم رو جداگونه به ميلادي تبديل كنيد.

saeed_sho
جمعه 27 مرداد 1391, 10:57 صبح
با کد بالا قمری میشه؟به میلادی تبدیل میکنه
شما قمری رو میحواید چی کار؟ مگه با شمسی و میلادی کارتون راه نمیافته؟

رزابرنامه یاب
جمعه 27 مرداد 1391, 11:58 صبح
به میلادی تبدیل میکنه
شما قمری رو میحواید چی کار؟ مگه با شمسی و میلادی کارتون راه نمیافته؟
نه ببخشید منظورم همون میلادی بوده نیدونم چرا نوشتم قمری!!!!!!!
البته با datetime.parese به میلادی تبدیل نمیشه ها....همون شمسی میمونه...
حالا من از totalHours استفاده کردم.با همون ت شمسی.ظاهرا که درست شده...نیدونم چرا قبلا ازش استاده نکرده بودم . خوب گفتم Hours هم مثل Days باید ج بده