PDA

View Full Version : سوال: جمع کردن مقادیر ساعت



brownbear
سه شنبه 18 مرداد 1390, 14:18 عصر
سلام
من در دیتابیسم مقادیر ساعت را بصورت تکست ذخیره کردم حالا می خوام این مقادیر را بصورت ساعت با هم جمع کنم
یعنی می خوام در یک حلقه مقادیری به فرمت ساعت با هم جمع کنم

Mani_rf
سه شنبه 18 مرداد 1390, 14:56 عصر
شما باید یک تابع SQL بنویسید که زمان ها را به دقیقه تبدیل کند، دقیقه ها را باهم جمع و یا کم کند، و پس از آن دوباره زمان به دست آمده را به ساعت و دقیقه تبدیل کنید.

Behzad_MCP
سه شنبه 18 مرداد 1390, 14:57 عصر
سلام دوست عزیز پس باید مقادیر string رو که از دیتابیس میخونی به DateTime تبدیل کنی و با استفاه از TimeSpan با هم جمع کنی کلا TimeSpan خیلی چیزای خوب و به درد بخوری برای کار کردن با Time داره :)

شاپرک
سه شنبه 18 مرداد 1390, 14:59 عصر
تكست يعني چه جوري؟
- 05:30
-0530
-530
-5:30

brownbear
سه شنبه 18 مرداد 1390, 23:05 عصر
من با time span عمل تفریق رو انجام دادم ولی جمع رو بلد نیستم برای تفریق از کد t1.subtract(t2) استفاده می کردم البته خوب کدش یادم نیست
حالا برای جمع باید چی بنویسم
فرمت من 05:30 است در هر صورت برای ساعت دوتا عدد و برای دقیقه نیز دوتا عدد داریم و بینشون هم : دارم

Behzad_MCP
چهارشنبه 19 مرداد 1390, 10:58 صبح
دوست عزیز کلی پراپرتی داره باهاشون کار کن دیگه :) اینم مثال خود MicroSoft


' Define two dates.
Dim date1 As Date = #1/1/2010 8:00:15AM#
Dim date2 As Date = #8/18/2010 1:30:30PM#
' Calculate the interval between the two dates.
Dim interval As TimeSpan = date2 - date1
Console.WriteLine("{0} - {1} = {2}", date2, date1, interval.ToString())
' Display individual properties of the resulting TimeSpan object.
Console.WriteLine(" {0,-35} {1,20}", "Value of Days Component:", interval.Days)
Console.WriteLine(" {0,-35} {1,20}", "Total Number of Days:", interval.TotalDays)
Console.WriteLine(" {0,-35} {1,20}", "Value of Hours Component:", interval.Hours)
Console.WriteLine(" {0,-35} {1,20}", "Total Number of Hours:", interval.TotalHours)
Console.WriteLine(" {0,-35} {1,20}", "Value of Minutes Component:", interval.Minutes)
Console.WriteLine(" {0,-35} {1,20}", "Total Number of Minutes:", interval.TotalMinutes)
Console.WriteLine(" {0,-35} {1,20:N0}", "Value of Seconds Component:", interval.Seconds)
Console.WriteLine(" {0,-35} {1,20:N0}", "Total Number of Seconds:", interval.TotalSeconds)
Console.WriteLine(" {0,-35} {1,20:N0}", "Value of Milliseconds Component:", interval.Milliseconds)
Console.WriteLine(" {0,-35} {1,20:N0}", "Total Number of Milliseconds:", interval.TotalMilliseconds)
Console.WriteLine(" {0,-35} {1,20:N0}", "Ticks:", interval.Ticks)
' The example displays the following output:
' 8/18/2010 1:30:30 PM - 1/1/2010 8:00:15 AM = 229.05:30:15
' Value of Days Component: 229
' Total Number of Days: 229.229340277778
' Value of Hours Component: 5
' Total Number of Hours: 5501.50416666667
' Value of Minutes Component: 30
' Total Number of Minutes: 330090.25
' Value of Seconds Component: 15
' Total Number of Seconds: 19,805,415
' Value of Milliseconds Component: 0
' Total Number of Milliseconds: 19,805,415,000
' Ticks: 198,054,150,000,000

brownbear
چهارشنبه 19 مرداد 1390, 13:42 عصر
سلام
این کد رو من بلدم ولی برای جمع جواب نمی ده من می خوام من برای کم کردن از این کد استفاده می کنم

tDef = T2.Subtract(T1)

Behzad_MCP
چهارشنبه 19 مرداد 1390, 13:45 عصر
فکر میکنم با این مشکلت حل بشه شایدم منظورت اصلا این نباشه

T1.Hours + T2.Hours

البته T1 و T2 رو به Timespan تبدیل کن

majidsoft
پنج شنبه 20 مرداد 1390, 01:40 صبح
سلام شما ابتدا باید مقادیر رشته ای خو را با این کد
Dim T5 As TimeSpan = TimeSpan.Parse("YOURFIELD")
به TIME SPAN تبدیل کنی سپس مقادیر را از طریق یک متغیر دیگر از نوع timespan با هم جمع کنی بعد با استفاده از توابع موجود در time span می تونی خروجی خودتو نشون بدی

morteza561
سه شنبه 08 اسفند 1391, 17:12 عصر
سلام

من برای جمع کردن دو زمان از همین کد اخیر استفاده می کردم. اما توی یه پروژه به جمع کردن زمان ها با میلی ثانیه نیاز پیدا کردم که دیگه متاسفانه این کد جواب نمیده.
دوستان غیر از راه جمع کردن دستی راه دیگه ای سراغ دارند؟

این کد منه:



span = TimeSpan.Parse("10:21:11") + TimeSpan.Parse("00:00:09")
TextBox1.Text = span.ToString


که در اصل میخوام طوری کار کنه که بتونه میلی ثانیه رو هم بگیره. که میشه مثل کد زیر:



span = TimeSpan.Parse("10:21:11,134") + TimeSpan.Parse("00:00:09,001")
TextBox1.Text = span.ToString


که ارور میده و میگه تعداد ارقام بیشتر از حد تعیین شده است :افسرده:

morteza561
سه شنبه 08 اسفند 1391, 17:21 عصر
خوب خدا رو شکر خودم یافتم :لبخند:

این برای من کار کرد:



Dim span As New TimeSpan
span = TimeSpan.Parse("10:21:11.000").Add(TimeSpan.Parse("00:00:30.051"))
TextBox1.Text = span.ToString