PDA

View Full Version : سوال: به دست آوردن ساعت کاری یه شخص در #C



abasi.mohsen
جمعه 28 آذر 1399, 21:52 عصر
با سلام
خواستم بپرسم چجوری میشه در #c جمع ساعات کارکرد یه شخص را بدست بیاریم مثلا شخصی ساعت ورودش 6:50 بوده و خروجش ساعت 14:15 جمع کارکردش میشه 8:25 ساعت.
اینکه ما بخوایم ساعت ها رو به دقیقه تبدیل کنیم بعد از هم کم کنیم رو دوستی پیشنهاد داد که اشتباه بود

با تشکر

daniyaltjm
جمعه 28 آذر 1399, 23:28 عصر
با سلام
خواستم بپرسم چجوری میشه در #c جمع ساعات کارکرد یه شخص را بدست بیاریم مثلا شخصی ساعت ورودش 6:50 بوده و خروجش ساعت 14:15 جمع کارکردش میشه 8:25 ساعت.
اینکه ما بخوایم ساعت ها رو به دقیقه تبدیل کنیم بعد از هم کم کنیم رو دوستی پیشنهاد داد که اشتباه بود

با تشکر

سلام فکر کنم باید عدد 60 که دقیقه هست رو از مقدار دقیقه ورودیش کم کنی 50-60=10 بعد با مقدار دقیقه خروجیش که 15 هست جمع کنی 15+10=25 برای ساعت هم منها میکنی 14-6=8

the king
شنبه 29 آذر 1399, 01:02 صبح
با سلام
خواستم بپرسم چجوری میشه در #c جمع ساعات کارکرد یه شخص را بدست بیاریم مثلا شخصی ساعت ورودش 6:50 بوده و خروجش ساعت 14:15 جمع کارکردش میشه 8:25 ساعت.
اینکه ما بخوایم ساعت ها رو به دقیقه تبدیل کنیم بعد از هم کم کنیم رو دوستی پیشنهاد داد که اشتباه بود

با تشکر
پیشنهادشون که اشتباه نیست، به شرطی که درست پیاده سازی بشه. اما مساله اینجا است که از 6:50 تا 7:00 ده دقیقه است و از 7:00 الی 14:00 هم هفت ساعت و از 14:00 الی 14:15 هم پانزده دقیقه، جمع ده دقیقه و هفت ساعت و پانزده دقیقه 7:25 میشه، نه 8:25


var entryTime = "6:50";
var exitTime = "14:15";
var diff = DateTime.Parse(exitTime).Subtract(DateTime.Parse(e ntryTime));
var diffTime = string.Format("{0:00}:{1:00}", diff.Hours, diff.Minutes);
MessageBox.Show(diffTime);



var entryTime = "6:50";
var exitTime = "14:15";
var entryMinutes = (int)DateTime.Parse(entryTime).TimeOfDay.TotalMinu tes;
var exitMinutes = (int)DateTime.Parse(exitTime).TimeOfDay.TotalMinut es;
var diff = new TimeSpan(0, exitMinutes - entryMinutes, 0);
var diffTime = string.Format("{0:00}:{1:00}", diff.Hours, diff.Minutes);
MessageBox.Show(diffTime);



var entryTime = new TimeSpan(6, 50, 0); // 6:50:00
var exitTime = new TimeSpan(14, 15, 0); // 14:15:00
var diff = exitTime.Subtract(entryTime);
var diffTime = string.Format("{0:00}:{1:00}", diff.Hours, diff.Minutes);
MessageBox.Show(diffTime);

daniyaltjm
شنبه 29 آذر 1399, 11:14 صبح
پیشنهادشون که اشتباه نیست، به شرطی که درست پیاده سازی بشه. اما مساله اینجا است که از 6:50 تا 7:00 ده دقیقه است و از 7:00 الی 14:00 هم هفت ساعت و از 14:00 الی 14:15 هم پانزده دقیقه، جمع ده دقیقه و هفت ساعت و پانزده دقیقه 7:25 میشه، نه 8:25


var entryTime = "6:50";
var exitTime = "14:15";
var diff = DateTime.Parse(exitTime).Subtract(DateTime.Parse(e ntryTime));
var diffTime = string.Format("{0:00}:{1:00}", diff.Hours, diff.Minutes);
MessageBox.Show(diffTime);



var entryTime = "6:50";
var exitTime = "14:15";
var entryMinutes = (int)DateTime.Parse(entryTime).TimeOfDay.TotalMinu tes;
var exitMinutes = (int)DateTime.Parse(exitTime).TimeOfDay.TotalMinut es;
var diff = new TimeSpan(0, exitMinutes - entryMinutes, 0);
var diffTime = string.Format("{0:00}:{1:00}", diff.Hours, diff.Minutes);
MessageBox.Show(diffTime);



var entryTime = new TimeSpan(6, 50, 0); // 6:50:00
var exitTime = new TimeSpan(14, 15, 0); // 14:15:00
var diff = exitTime.Subtract(entryTime);
var diffTime = string.Format("{0:00}:{1:00}", diff.Hours, diff.Minutes);
MessageBox.Show(diffTime);



خب برای ساعت یک منهای 1 هم بزاره درست میشه

abasi.mohsen
جمعه 05 دی 1399, 12:33 عصر
مرسی از جواب تون ولی یه مسئله دیگه این هستش که اگر ورودش ساعت مثلاً ۲۲:۲۵ و خروجش ساعت ۷:۱۵ بود جوابش درست در نمیاد

daniyaltjm
جمعه 05 دی 1399, 12:50 عصر
مرسی از جواب تون ولی یه مسئله دیگه این هستش که اگر ورودش ساعت مثلاً ۲۲:۲۵ و خروجش ساعت ۷:۱۵ بود جوابش درست در نمیاد

سلام برای مواردی که ساعت ورودی عددش از ساعت خروجی بیشتره باید یک شرط بزاری به این صورت که اول بررسی کنی اکه بزرگتر بود این کاری که میگم رو انجام بدی:

24-22=2 بعد ساعت خروجی رو جمع میکنی با نتیجه که میشه 7+2=9 بعد یک منهای یک میزنی که بشه 9-1=8 این از ساعت دقیقه هم همون فرقی نداره...

abasi.mohsen
جمعه 05 دی 1399, 13:18 عصر
سلام برای مواردی که ساعت ورودی عددش از ساعت خروجی بیشتره باید یک شرط بزاری به این صورت که اول بررسی کنی اکه بزرگتر بود این کاری که میگم رو انجام بدی:

24-22=2 بعد ساعت خروجی رو جمع میکنی با نتیجه که میشه 7+2=9 بعد یک منهای یک میزنی که بشه 9-1=8 این از ساعت دقیقه هم همون فرقی نداره...
کارکرد این شخص در واقع میشود ۸:۵۰ دقیقه ولی من هر جور تو سی شارپ می‌نویسم درست در نمیاد از طرفی اگر ساعت ورودی دقیقا مثلاً ۲۲ بود و خروجی دقیقا مثلاً ۶ بود اینکه ما بیایم تو برنامه منهای یک بدیم اشتباه هستش چون قراره ما این اطلاعات رو از کاربر دریافت کنیم و نمی‌دونیم قراره ورودی با دقیقه باشه یا نه

daniyaltjm
جمعه 05 دی 1399, 13:26 عصر
کارکرد این شخص در واقع میشود ۸:۵۰ دقیقه ولی من هر جور تو سی شارپ می‌نویسم درست در نمیاد

پس این همه توضیح دادم بالا!!
24-22 میشه 2
2 به اضافه 7 میشه 9
برای اینکه محاسبات درست در بیاد و خود ساعت ورود هم شمرده بشه یک منفی 1 هم میزنیم که میشه 8 این از ساعت
برای دقیقه هم مثل قبل
60-25 میشه 35 و با 15 جمع میشه میشه 50
الان ساعت 8:50 بدست اومد کجاش درست در نمیاد دقیقا؟!!!:چشمک:

daniyaltjm
جمعه 05 دی 1399, 13:53 عصر
از طرفی اگر ساعت ورودی دقیقا مثلاً ۲۲ بود و خروجی دقیقا مثلاً ۶ بود اینکه ما بیایم تو برنامه منهای یک بدیم اشتباه هستش چون قراره ما این اطلاعات رو از کاربر دریافت کنیم و نمی‌دونیم قراره ورودی با دقیقه باشه یا نه
دوست عزیز من روش کلی رو گفتم بهت دیگه این موارد و باگ هایی که داره رو خودت باید فکر کنی و بررسی کنی حالت های دیگشو مثلا برای این که گفتی یه شرط بزار که اگه دقیقه ها 0 بود دیگه نیاد 60-0 کنه و همون 0 بزاره ... اگه هم روش دیگه ایی سراغ داری از همون استفاده کن....

abasi.mohsen
جمعه 05 دی 1399, 14:06 عصر
ok, بازم ممنون از اینکه جواب دادید

abasi.mohsen
جمعه 05 دی 1399, 15:16 عصر
این برنامه رو هم من پیدا کردم ولی تو حالت برعکسش مثلا همون که گفتم ورود ساعت 22 باشه و خروج ساعت 6 جواب نمیده


string StartTime, EndTime;
StartTime = "05:45 AM";
EndTime = "14:05 PM";
DateTime startTime = DateTime.Parse(StartTime);
DateTime endTime = DateTime.Parse(EndTime);
TimeSpan ts = endTime.Subtract(startTime);
MessageBox.Show(ts.ToString());

the king
جمعه 05 دی 1399, 16:29 عصر
مرسی از جواب تون ولی یه مسئله دیگه این هستش که اگر ورودش ساعت مثلاً ۲۲:۲۵ و خروجش ساعت ۷:۱۵ بود جوابش درست در نمیاد

ورود و خروج همیشه همراه با تاریخ ئه، فرض کنیم که ورود 22:25 امروز بوده، اما ساعت 7:15 به تنهایی که نشون نمیده طرف فردا خارج شده یا پسفردا یا یک هفته دیگه، تعداد روز مشخص نیست.
برای همین همیشه یک تاریخ کنار ساعت ورود و خروج هست که اگه همراه اون تاریخ اش Parse کنید دیگه مشکلی برای محاسبه خروج در روز بعد نخواهد داشت.