PDA

View Full Version : ثبت زمان های مختلف در هر بازه ای



samiasoft
شنبه 29 مهر 1396, 20:35 عصر
سلام دوستان

عنوان مناسبی برای سوالم پیدانکردم اگر نامناسب هستش.

درواقع میخواستم که زمان حال حاضر رو دریافت کنم و چند بار ثبت کنم...بطوری که در هرکدوم از این زمان ها اختلاف ثانیه ای بدین صورت باشه :
0
2
3
4
5
6
7
8
9
10


برای مثال بدین صورت داخل لیست باکس بریزم :
2016/12/31;09:47:01
2016/12/31;09:47:03
2016/12/31;09:47:06
2016/12/31;09:47:10
2016/12/31;09:47:15
2016/12/31;09:47:21
2016/12/31;09:47:28
2016/12/31;09:47:36
2016/12/31;09:47:45
2016/12/31;09:47:55
2016/12/31;09:48:06


به چه صورت اینکارو انجام بدم بهتر هستش...ممنون میشوم راهنمایی کنید

mr.sirwan
شنبه 29 مهر 1396, 22:27 عصر
با سلام دقیقا میخواین اختلاف ها چند ثانیه ای باشن؟ یکی یکی؟ منظم؟ نامنظم؟
در هر حال برای DateTime متدی به اسم AddSeconds وجود داره که مقدار ثانیه رو میگیره و بسته به مثبت و یا منفی بودن عدد دریافتی، اون مقدار ثانیه رو روی تاریخ اعمال میکنه
اگر سوالتون رو اشتباه متوجه شدم، لطفا بیشتر توضیح بدین

samiasoft
شنبه 29 مهر 1396, 23:07 عصر
تشکر از شما ...تونستم به هدفم برسم ...فقط موند یه موضوعی :

اینکه چطوری 2 زمان رو با هم مقایسه کنیم ؟ که بدونیم کدوم زمان گذشته هستش کدوم زمان حال.

برای مثال دو زمان با ارایش زیر رو داریم :



22:05:06

10:06:09


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

فکر میکنم باید با تابع split ساعت و دقیقه و ثانیه روجدا کنم و اول ساعت ها رو مقایسه کنم بعد دقیقه بعد ثانیه.

راه حل بهتری سراغ ندارید؟

چون برای تاریخ هم میخواستم چنین کاری انجام بدم .


2017/05/06

2018/06/08

mr.sirwan
شنبه 29 مهر 1396, 23:17 عصر
ذکر نکردید که شما این دوتا مقدار رو بصورت string در اختیار دارید یا بصورت datetime ؟ درصورتیکه بصورت datetime در اختیار دارین میتونین از پراپرتی TimeOfDay استفاده کنین که فقط زمان مربوط به اون تاریخ رو در اختیارتون قرار میده و میتونین عمل مقایسه رو انجام بدین، اما اگ بصورت string باشه، میتونین بدین صورت دوتا string رو مقایسه کنین:

time1.CompareTo(time2);
این متد درصورتیکه متغیر time1 از متغیر time2 کوچکتر بود -1 درصورتیکه time1 از time2 بزرگتر بود +1 و درصورتیکه دوتا متغییر باهم برابر بودن مقدار صفر رو برمیگردونه


برای مقایسه فقط تاریخ هم میتونین از پراپرتی Date استفاده کنین و عمل مقایسه رو چه با عملگر های < > == و چه با متد
dateTime1.Date.CompareTo(dateTime2.Date)

انجام بدین این متد هم مثل متد CompareTo که در بالا توضیح دادم عمل میکنه

samiasoft
سه شنبه 02 آبان 1396, 01:24 صبح
یه سوال دیگر اینکه ...

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



2016/11/13;12:06:15 ب.ظ


چطوری این زمان رو بدیم به دیتا تایم؟
بصورت دستی اگر بدیم اینطور میشه


DateTime timeSource = new DateTime(2016, 11, 13, 12, 06, 15,ب.ظ );


ولی چطوری تکست باکس رو بدم بهش؟!

mr.sirwan
سه شنبه 02 آبان 1396, 01:42 صبح
به این لینک مراجعه کنین:
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/strings/how-to-convert-a-string-to-a-datetime

samiasoft
سه شنبه 02 آبان 1396, 02:05 صبح
به این لینک مراجعه کنین:
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/strings/how-to-convert-a-string-to-a-datetime

تشکر از شما من این صفحات رو دقایقی پیش مطالعه کردم ولی به نتیجه نرسیدم

در واقع اون ارایش زمانی رو من از قبل در تکست باکس دارم....میخواستم مثلا 2 ثانیه بهش اضافه کنم

ولی متاسفانه خطا میده String was not recognized as a valid DateTime

DateTime timeToUse = Convert.ToDateTime(textBox1.Text);

textBox2.Text= timeToUse.AddSeconds(2).ToString("yy/MM/dd;HH:mm:ss tt")

حتی اینطورم نوشتم نشد

DateTime timeToUse = Convert.ToDateTime(textBox1.Text);
textBox2.Text= timeToUse.AddSeconds(2).ToString()

danialafshari
سه شنبه 02 آبان 1396, 03:32 صبح
با سلام
میتونید به این شکل انجام بدید
چون قالب DateTime بدون ; هست باید بجای ; فاصله[Space] باشد

private void button1_Click(object sender, EventArgs e)
{
string[] str = textBox1.Text.Split(';');
string newStr = String.Format("{0} {1}", str[0], str[1]);
DateTime dt = Convert.ToDateTime(newStr);
MessageBox.Show(dt.AddSeconds(2).ToString("yyyy/MM/dd;HH:mm:ss tt"));
}

به شکل زیر هم میشه که بهتره

string str = textBox1.Text.Replace(';', ' ');
DateTime dt = Convert.ToDateTime(str);
MessageBox.Show(dt.AddSeconds(2).ToString("yyyy/MM/dd;HH:mm:ss tt"));

موفق باشید