PDA

View Full Version : تشخیص روز قبل و بعد تاریخ وارد شده



sadeghpa80
چهارشنبه 01 دی 1395, 11:41 صبح
سلام
من توی پروژه ام تاریخ رو به صورت nvarchar ذخیره میکنم مثلا 1395/09/30 حالا میخوام کاری کنم که بدونم روز قبل و بعد این تاریخ کی میشه
آیا راهی هست

اصلا سناریوم اینه
کاربر من هر روز میاد آمار رو وارد میکنه
حالا من میخوام کنم که امار رو نتونه جلو جلو وارد کنه
مثلا تا تاریخ 1395/09/29 رو نزده باشه نتونه بره تاریخ 1395/09/30 رو وارد کنه


خودم تو ذهنم بود آخرین تاریخی که وارد کرده رو بگیرم ببینم تاریخ روز بعد اون چیه و چک کنه اگه نزده بود نزاره ادامه بده

آیا اساتید راه حلی دارن ؟

csharpcollegian
چهارشنبه 01 دی 1395, 17:20 عصر
سلام
دوست عزیز شما می تونید به کمک متد AddDays شئ DateTime اینکار رو انجام بدید. فقط کافیه تاریخ مورد نظرتون رو از دیتابیس بخونید و اون رو به نوع DateTime تبدیل کنید. فرض می کنیم تاریخ مورد نظر رو از دیتابیس خوندید و به نوع DateTime تبدیل کردید و در متغیر lastDate قرار دادید، در این صورت داریم :
lastDate.AddDays(-1) ---> //تاریخ روز قبلی
lastDate.AddDays(1) ---> //تاریخ روز بعدی
lastDate.AddDays(2) ---> //تاریخ دو روز بعدی
موفق باشید

reza_ali202000
چهارشنبه 01 دی 1395, 23:03 عصر
سلام دوست عزیز.
اگه پروژه اخراش هست یه راه حل ساده ولی غیر استاندارد پیشنهاد میکنم.
نظرم اینه که چون تاریخ رو تکس ذخیره کردید بیاید اونایی که ماه و سالشون یکی هست رو در بیارید، حالا اگه از عدد روزی که زده کمتر بود نتونه ثبت کنه:
البته دقت داشته باشین که شرط پایین برا هر ماه جداگانه کار میکنه. بعد برا روزهایی که یک وارد میشه باید یه شرط هم بزارید که تعداد ماه قبل رو در بیاره و اگه کمتر از سی بود نتونه ثبت کنه.

ژیار رحیمی
پنج شنبه 02 دی 1395, 12:30 عصر
سلام
من توی پروژه ام تاریخ رو به صورت nvarchar ذخیره میکنم مثلا 1395/09/30 حالا میخوام کاری کنم که بدونم روز قبل و بعد این تاریخ کی میشه
آیا راهی هست

اصلا سناریوم اینه
کاربر من هر روز میاد آمار رو وارد میکنه
حالا من میخوام کنم که امار رو نتونه جلو جلو وارد کنه
مثلا تا تاریخ 1395/09/29 رو نزده باشه نتونه بره تاریخ 1395/09/30 رو وارد کنه


خودم تو ذهنم بود آخرین تاریخی که وارد کرده رو بگیرم ببینم تاریخ روز بعد اون چیه و چک کنه اگه نزده بود نزاره ادامه بده

آیا اساتید راه حلی دارن ؟


private string AddOrSubDayToStrDate(string persiandate, int dayes = 1)
{
var pc = new PersianCalendar();//date formate 1395/10/12
var date = pc.ToDateTime(
Convert.ToInt32(persiandate.Substring(0, 4)),
Convert.ToInt32(persiandate.Substring(5, 2)),
Convert.ToInt32(persiandate.Substring(8, 2)),0,0,0,0
);
date=date.AddDays(dayes);
return String.Format(@"{0:0000}/{1:00}/{2:00}",
pc.GetYear(date),
pc.GetMonth(date),
pc.GetDayOfMonth(date)
);
}

نحوه فراخوانی

var addOneDay= AddOrSubDayToStrDate("1395/12/13");
var SubOneDay = AddOrSubDayToStrDate("1395/12/13",-1);