من یه برنامه ویندوز فرم دارم که میخوام از ساعت 3 بعد از ظهر روز قبل تا ساعت 3 بعد از ظهر امروز هر رکوردی که ثبت شد با یه عدد مشابه بگیره و وقتی از ساعت 3 بعد از ظهر امروز گذشت یه واحد به اون عدد اضافه کنه ،مشکل من اینجاست که تو کار به DateTime نمیتونم ساعت سه بعدظهر به بعد دیروز رو مشخص کنم ،بخوام دقیق تر بگم میخوام توی این 24 ساعت هر درخواست ثبت شد یه عدد مشابه بگیره ،فقط توی کویری هام نمیتونم بر اساس زمان اون نتیجه رو بدست بیارم.
ممنون میشم راهنمایی کنید
سلام
برای مقایسه زمان ها از تابع Compare که در کلاس DateTime موجود است، استفاده می کنیم. به نمونه کد زیر دقت کنید:
DateTime first = DateTime.Parse("9/4/2014 1:35:55 AM");
DateTime second = DateTime.Parse("9/4/2014 1:35:34 AM");
if (DateTime.Compare(first, second)>0)
MessageBox.Show("زمان اول بزرگتر است");
else if(DateTime.Compare(first, second)<0)
MessageBox.Show("زمان دوم بزرگتر است");
else
MessageBox.Show("زمان ها با هم برابر هستند");
متغیرهای نوع DateTime خودشون قابلیت افزودن و یا کم کردن تاریخ رو دارن. نکته اول اینکه شما باید تاریخ و زمان رو در دیتابیس هم به صورت DateTime تعریف کنید. حالا اگر تاریخ و زمان در دیتابیس شما به صورت DateTime هست میتونید به راحتی با زمان و تاریخی که دارید کار کنید :
//افزودن روز به تاریخ
var query = _context.users.where(u => u.mydate.Date.AddDays(1) < DateTime.Now).ToList();
//کم کردن روز به تاریخ
var query = _context.users.where(u => u.mydate.Date.AddDays(-1) < DateTime.Now).ToList();
//افزودن ساعت به زمان
var query = _context.users.where(u => u.mydate.AddHours(10) < DateTime.Now).ToList();
//کاهش ساعت به زمان
var query = _context.users.where(u => u.mydate.AddHours(-10) < DateTime.Now).ToList();
در کدهای بالا نحوه افزودن و کم کردن روز و ساعت از تاریخ نمایش داده شده. (ستون mydate در دیتابیس از نوع datetime باید باشه)
شما میتونید از توابع دیگه ای مثل AddMonth و AddYear و AddMinitus و AddSeconds و ... هم استفاده کنید.
اما در مورد موضوع شما. شما در واقع رکوردهایی از جدول رو میخاید که در بازه زمانی ساعت 15:00 روز قبل تا زمان کنونی باشه. (حالا بعد از اینکه این رکوردها رو دریافت کردید میتونید یک عدد یا رشته بهشون اضافه کنید یا اینکه هر تغییری رو روشون بدید.) می تونید از فرمول زیر استفاده کنید
TimeSpan start = TimeSpan.Parse("15:00:00"); // 15 PM
TimeSpan end = TimeSpan.Parse("14:59:59");
TimeSpan now = DateTime.Now.TimeOfDay;
if (start <= end)
{
// اگر هر دو زمان در یک روز باشد
if (now >= start && now <= end)
{
// رکوردهایی که بین این دو بازه باشند
}
}
else
{
// اگر زمان ها در روزهای مختلف باشند
if (now >= start || now <= end)
{
// رکوردهایی که بین این دو بازه باشند
}
}
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
349
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
318
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4268
- پاسخ :
1
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
660
- پاسخ :
0
|
تاریخ :
1398/09/05
- ساعت :
06:04:00 PM
- بازدید :
3172
- پاسخ :
2
|
تاریخ :
1398/09/08
- ساعت :
11:38:00 PM
- بازدید :
3251
- پاسخ :
1
|
تاریخ :
1403/04/12
- ساعت :
07:27:00 PM
- بازدید :
658
- پاسخ :
0
|
تاریخ :
1403/01/29
- ساعت :
08:08:00 AM
- بازدید :
688
- پاسخ :
4
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2008
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
75
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1033
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
428
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4797
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1160
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
597
- پاسخ :
1
|