PDA

View Full Version : سوال: جمع دو متغیر از نوع DateTime



po0ya_jo0n
چهارشنبه 16 تیر 1389, 08:24 صبح
سلام
میخاستم با جمع این دو متغیر t1 و t2 که از نوع DateTime هستند :


DateTime t1 = Convert.ToDateTime("23:20:00");
DateTime t2 = ConvertToDateTime("23:00:00);
DateTime sum = t1 + t2;


به جواب


sum = "46:00:00";

برسم. ولی با این روش نمیشه. چون متغیرها با هم جمع نمیشن. چرا؟
یا با چه روشهای دیگه ای میتونم دوتا تایم رو با هم جمع کنم؟
با تشکر

ozzy_mra
چهارشنبه 16 تیر 1389, 09:01 صبح
DateTime t = DateTime.Now;
t.AddHours(12);
t.AddMinutes(25);
t.AddSeconds(12);
با دستورات زیر هم می تونی از تاریخ دومت مقادیر ساعت،دقیقه و ثانیه رو استخراج کنی

DateTime t2 = DateTime.Now;
int h = t2.Hour;
int m = t2.Minute;
int s = t2.Second;

po0ya_jo0n
چهارشنبه 16 تیر 1389, 09:46 صبح
مرسی ولی من میخام جمع کنم نه استخراج. چون با Substring(); هم میتونم استخراج کنم. ولی چه طوری باید باهم جمعشون کرد ؟

NIK
چهارشنبه 16 تیر 1389, 10:18 صبح
مرسی ولی من میخام جمع کنم نه استخراج. چون با Substring(); هم میتونم استخراج کنم. ولی چه طوری باید باهم جمعشون کرد ؟


یعنی چی میخواید جمع کنید ؟
مثلاً میخواید جمع تاریخ 89/04/15 با 89/04/25 چی بشه؟

اگه منظور ساعته که دوستمون درست راهنماییتون کردن.

string sum = (dt1.Hour + dt2.Hour).ToString() + ":" + (dt1.Minute + dt2.Minute).ToString() + ":" + (dt1.Second + dt2.Second).ToString();

فراموش کردم اینو بگم. یه شرط هم باید واسه ثانیه و دقیقه بزاری که درصورتی که بزرگتر از 60 شد، یه واحد به دقیقه یا ساعت اضافه کنه. یعنی اگه بزرگتر از 60 شد، بر 60 تقسیمش کن و خارج قسمت رو به واحد بالاتر و باقیمانده رو بزار همونجا بمونه.

ozzy_mra
چهارشنبه 16 تیر 1389, 10:22 صبح
خب شما که t2 رو به هر حال باید به date time تبدیل کنید. یه متد ساده بنویس که مقادیر ساعت و دقیقه و ثانیه رو به کمک کد دومی که نوشتم از t2 جدا کنه و بهد با t1 جمع کنه

public DateTime addDate(int h, int m, int s, DateTime t1)
{
t1.AddHours(h);
t1.AddMinutes(m);
t1.AddSeconds(s);
return t1;
}
بعد تابع رو اینجوری فراخوانی کن

DateTime result;
result = addDate( t2.Hour,t2.Minute,t2.Second,t1);
برای جمع تاریخ هم از روش مشابه با این می تونی استفاده کنی البته دو تا تاریخو نمی شه با هم جمع کرد باید بهش روز، ماه یا سال رو اضافه یا کم کنی

po0ya_jo0n
چهارشنبه 16 تیر 1389, 11:02 صبح
یعنی چی میخواید جمع کنید ؟
مثلاً میخواید جمع تاریخ 89/04/15 با 89/04/25 چی بشه؟



نه ساعت رو میخام جمع کنم.

از راهنمایی همه دوستان ممنونم خیلی کمک کرد. روی همین روشهایی که فرمودید کار میکنم.

armanpour
چهارشنبه 16 تیر 1389, 11:19 صبح
سلام شايد اين كمك كنه



DateTime d1 = new DateTime();
DateTime d2 = new DateTime();
DateTime result = new DateTime();
//Different Times

d1 = DateTime.Now;
d2 = DateTime.Now.AddHours(1);
d2 = DateTime.Now.AddMinutes(5);

//SUB

result = d1.AddSeconds((double)(d2.Second));
result = result.AddMinutes((double)(d2.Minute));
result = result.AddHours((double)(d2.Hour));