PDA

View Full Version : جمع ساعت و دقیقه با TimeSpan



juza66
پنج شنبه 19 آذر 1394, 15:58 عصر
با سلام خدمت اساتید عزیز؛


نحوه جمع ساعت و دقیقه با TimeSpan رو میخواستم انجام بدم

این کد زیر رو در فرم لود اطلاعاتم از دیتاگرید قرار دادم:

DataTable dt = new DataTable();
dt = ClassOledb.SelectOleDb.GetData("SELECT * FROM tbltime WHERE codemeli='" + codemeli_get + "'and dateinsert BETWEEN'" + "1394/" + Shamsi.geting_date_month("") + "/01" + "'and'" + "1394/" + Shamsi.geting_date_month("") + "/31" + "' order by dateinsert");
dataGridViewX1.DataSource = dt;

dis_button();
TimeSpan kolii = new TimeSpan();
foreach (DataRow dr in dt.Rows)
{
if (dr["koltime"].ToString() != "")
{
TimeSpan timrkoli = TimeSpan.Parse(dr["koltime"].ToString());
kolii += timrkoli;
lMorning.Text = kolii.ToString();
}
}


این نتیجه ای اول که مشکل اینه که فرمت ثانیه رو میخوام بردارم یعنی بشه hh:MM

http://charp.persiangig.com/Untitled.png

و این مشکل دوم تویی محاسبه با تعداد زیاد جمع ساعت که نتیجه رو اشتباه نمایش میده؟!

http://charp.persiangig.com/Untitled2.png

ebrahim.rayatparvar
پنج شنبه 19 آذر 1394, 16:36 عصر
برای مشکل اولت از tostring و فرمت هایی که داره استفاده کردی؟؟؟؟
مشکل دومت رو کمی شفاف تر توضیح میدی منظورت از تعداد زیاد جمع منظورت رو نفهمیدم.

juza66
پنج شنبه 19 آذر 1394, 20:23 عصر
برای مشکل اول از فرمت های tostring استفاده کردم مشکل داشت (هم بیرون حلقه و هم داخل حلقه)

مشکل دومم (توعکس دوم) دقت کنید محاسبه جمع ساعت ها اشتباهه!!

systam
شنبه 05 دی 1394, 17:10 عصر
سلام به همه ی اساتید سایت
این برنامه که ضمیمه میکنم
جمع زمان های سطر های رو حساب و در یک ستون در گرید نمایش میده
ولی برای قسمت دومش که جمه ستونی زمانهای میباشد مشکل داره هرکاری کردم نتونستم درش بیام که گیرش کجا
اگه تاریخ و به صورت دستی وارد کنی بدون مشکل درست کارمیکنه !
و یا از دیگر فیلد ها استفاده برای جمع ستونی بازم درست کارمیکنه !
که نام ستون گرید ما برای جمع کل زمان ها هست sumtime
و نام رکورد های دیگه هم هست sobh ,zohr,ase,shab که هرکدون رو بجای sumtime توی حلقه دوم بزاری درست کار میکنه
که نمیدونم چیکار کنم دوستان برنامه رو یک بررسی بکنند ببینند مشکل از کجاست
عکس خطا رو هم ضمیمه کردم

dooste_2002
شنبه 05 دی 1394, 18:07 عصر
با سلام خدمت شما دوست عزیز
فکر کنم این کد به کارت بیاد ولی خودم تست نکردم چون قبلاً این کار رو کردم



TimeSpan sum = TimeSpan.Zero;
for ( int i = 0; i < grid_horas.Rows.Count; i++ )
{
sum += (TimeSpan)grid_horas.Rows[i].Cells[7].Value;
}

systam
شنبه 05 دی 1394, 18:11 عصر
دادا کد واضح نیست میشه مرتبش کنی

systam
شنبه 05 دی 1394, 21:55 عصر
با سلام خدمت شما دوست عزیز
فکر کنم این کد به کارت بیاد ولی خودم تست نکردم چون قبلاً این کار رو کردم















1
2
3
4
5

TimeSpan sum = TimeSpan.Zero;
for ( int i = 0; i < grid_horas.Rows.Count; i++ )
{
sum += (TimeSpan)grid_horas.Rows[i].Cells[7].Value;
}








سلام دوست عزیز
این کدی رو که زحمت کشیدی گذاشتید تست کردم خطا داره
عکس رو ضمیمه کردم

Amir4317
شنبه 05 دی 1394, 23:30 عصر
این مشکل دوم تویی محاسبه با تعداد زیاد جمع ساعت که نتیجه رو اشتباه نمایش میده؟!

http://charp.persiangig.com/Untitled2.png

خب اینکه درست نشون میده که ! 3 روز و 10 ساعت!
اما اگه میخوای فقط کل شاعت ها رو بهت نشون بده این کد رو بزن:

lblMorning.Text =kolii.TotalHours.ToString();

یا

lblMorning.Text = kolii.TotalHours.ToString("00") + ":" + kolii.TotalMinutes.ToString("D2");

دستور tostring را پارامترهای "00" و یا "D2" برای نمایش دو رقمی با پرکردن جای خالی توسط کاراکتر 0 استفاده کنید.

حالا خودمونیم، حقوق ساعتی چقدر میدن؟