محاسبه تاریخ پایانی با دادن تاریخ شروع
سلام دوستان من میخوام وقتی تاریخ شروع رو دادم به صورت خودکار با کلیک روی maskedtextbox تاریخ پایان رو بهم بده یعنی یک فرد وقتی میخواد مثلا دور روز مرخصی بگیره این تاریخ رو که بهش میدیم 94/4/7 دو روز بعد رو محاسبه کنه و 94/4/9 رو بهمون بده
حالا راه حلش چیه ؟
ممنون
نقل قول: محاسبه تاریخ پایانی با دادن تاریخ شروع
نقل قول:
نوشته شده توسط
reza4359
سلام دوستان من میخوام وقتی تاریخ شروع رو دادم به صورت خودکار با کلیک روی maskedtextbox تاریخ پایان رو بهم بده یعنی یک فرد وقتی میخواد مثلا دور روز مرخصی بگیره این تاریخ رو که بهش میدیم 94/4/7 دو روز بعد رو محاسبه کنه و 94/4/9 رو بهمون بده
حالا راه حلش چیه ؟
ممنون
تاریخ اولتو به میلادی تبدیل کن بعد با استفاده از متد addday دو روز به اون اضافه کن بعد دوباره به شمسی تبدیل کن.
DateTime dt = DateTime.Now;
DateTime newTime=dt.AddDays(2);
نقل قول: محاسبه تاریخ پایانی با دادن تاریخ شروع
با اجازه راه حل ساده تر
PersianCalendar pc = new PersianCalendar(); DateTime dt=DateTime.Now.AddDays(3);
string date = pc.GetYear(dt) + "/" + pc.GetMonth(dt) + "/" + pc.GetDayOfMonth(dt);
نقل قول: محاسبه تاریخ پایانی با دادن تاریخ شروع
نقل قول:
نوشته شده توسط
rezafatehy
با اجازه راه حل ساده تر
PersianCalendar pc = new PersianCalendar(); DateTime dt=DateTime.Now.AddDays(3);
string date = pc.GetYear(dt) + "/" + pc.GetMonth(dt) + "/" + pc.GetDayOfMonth(dt);
ممنون و تشکر از جوابتون حالا این قسمت DateTime dt=DateTime.Now.AddDays تاریخ جاری رو به ما میده اگه بخوایم خودمون تاریخ به دلخواه بزنیم باید چه کار کرد؟
نقل قول: محاسبه تاریخ پایانی با دادن تاریخ شروع
دوستان کسی نیست بلد باشه؟
1 ضمیمه
نقل قول: محاسبه تاریخ پایانی با دادن تاریخ شروع
دوستان میخوام به این صورت باشه
ضمیمه 132732
داخل کادر صفر تعداد روزی که میخواد اضافه بشه و داخل کادر دومی تاریخ رو میزنیم و با کلیک بر روی تکس باکس سومی تاریخی که اضافه شده را باید نمایش بده
نقل قول: محاسبه تاریخ پایانی با دادن تاریخ شروع
سلام
--------------------------------------------- ویرایش
از تابع زیر استفاده کنید.
private string AddDayToShamsiDate(string tarikh, double days)
{
string year = tarikh.Substring(0, 4);
string month = tarikh.Substring(5, 2);
string day = tarikh.Substring(8, 2);
//تبدیل تاریخ شمسی به میلادی
PersianCalendar pc = new PersianCalendar();
DateTime dt = pc.ToDateTime(Convert.ToInt32(year), Convert.ToInt32(month), Convert.ToInt32(day), 0, 0, 0, 0);
//افزودن روزهای مورد نظر به تاریخ میلادی
DateTime _newDate = dt.AddDays(days);
//تبدیل تاریخ میلادی به شمسی
string _result = "";
_result += pc.GetYear(_newDate).ToString("0000");
_result += "/";
_result += pc.GetMonth(_newDate).ToString("00");
_result += "/";
_result += pc.GetDayOfMonth(_newDate).ToString("00");
return _result;
}
نحوه استفاده: textBox1.Text=AddDayToShamsiDate("1394/04/08", 23);
نقل قول: محاسبه تاریخ پایانی با دادن تاریخ شروع
نقل قول:
نوشته شده توسط
reza4359
سلام دوستان من میخوام وقتی تاریخ شروع رو دادم به صورت خودکار با کلیک روی maskedtextbox تاریخ پایان رو بهم بده یعنی یک فرد وقتی میخواد مثلا دور روز مرخصی بگیره این تاریخ رو که بهش میدیم 94/4/7 دو روز بعد رو محاسبه کنه و 94/4/9 رو بهمون بده
حالا راه حلش چیه ؟
ممنون
شما تاریخ رو تو دیتابیس ذخیره میکنید و نوع فیلد شما برای تاریخ چه هستشئ چون اگه بخواهید تاریخ رو از دیتابیس هم مقایسه کنید باز با مشکل بر خورد میکنید چون در تاریخ میلادی ماه دوم 28 روزه هستش و همین طور در ماه 4 روم و نوع فیلد شما date باشه تاریخ شمسی ذخیره میشه ولی وقتی به تاریخ ماه 2 و 4 رو میرسه که 28 روزه هستش در میلادی ولی شمسی 31 روزه برنامه خطا میده چون سیستم میگه این رشته هستش و ذخیره نمیکنه در فیلد نوع date و از طرف دیگه نمی تونید مقایسه کنید برای اینکه تو کارتون پیش ببرید اگه دیتابیس ذخیره میکنید بیاد از تاریخ شروع 2 تا فیلد در دیتابیس و از تاریخ پایان 2 تا نوع بسازید شمسی رو از نوع nvarchar قرار بدید و میلادی رو از نوع date وقتی میلادی وارد میشه برای شروع به طور مخفی میلادی تبدیل میشه و وقتی تاریخ پایان میلادی حساب شود تاریخ شمسی رو نمایش بده بدون هیچ ایرادی و شخص کاربر فکر میکنه تاریخ شمسی داره مقایسه میشه ولی در صورتی تاریخ میلادی مخفی یانه عملیات روش پیاده میشه.
نقل قول: محاسبه تاریخ پایانی با دادن تاریخ شروع
الان دقیقا مشکلتون کجاست؟
نقل قول: محاسبه تاریخ پایانی با دادن تاریخ شروع
نقل قول:
نوشته شده توسط
Mahmoud Zaad
سلام
--------------------------------------------- ویرایش
از تابع زیر استفاده کنید.
private string AddDayToShamsiDate(string tarikh, double days)
{
string year = tarikh.Substring(0, 4);
string month = tarikh.Substring(5, 2);
string day = tarikh.Substring(8, 2);
//تبدیل تاریخ شمسی به میلادی
PersianCalendar pc = new PersianCalendar();
DateTime dt = pc.ToDateTime(Convert.ToInt32(year), Convert.ToInt32(month), Convert.ToInt32(day), 0, 0, 0, 0);
//افزودن روزهای مورد نظر به تاریخ میلادی
DateTime _newDate = dt.AddDays(days);
//تبدیل تاریخ میلادی به شمسی
string _result = "";
_result += pc.GetYear(_newDate).ToString("0000");
_result += "/";
_result += pc.GetMonth(_newDate).ToString("00");
_result += "/";
_result += pc.GetDayOfMonth(_newDate).ToString("00");
return _result;
}
نحوه استفاده:
textBox1.Text=AddDayToShamsiDate("1394/04/08", 23);
ببخشید با تغییر کدوم قسمت میتونیم به طور مثال تاریخ 94/4/10 تا 94/4/10 رو یک روز محاسبه کنه؟
یعنی یک روز رو از تاریخ 94/4/10 تا 94/4/11 محاسبه نکنه
ممنون
نقل قول: محاسبه تاریخ پایانی با دادن تاریخ شروع
نقل قول:
نوشته شده توسط
reza4359
ببخشید با تغییر کدوم قسمت میتونیم به طور مثال تاریخ 94/4/10 تا 94/4/10 رو یک روز محاسبه کنه؟
یعنی یک روز رو از تاریخ 94/4/10 تا 94/4/11 محاسبه نکنه
ممنون
قسمت زیر رو تغییر بدید:
//افزودن روزهای مورد نظر به تاریخ میلادی DateTime _newDate = dt.AddDays(days);
به
DateTime _newDate = dt.AddDays(days - 1);
نقل قول: محاسبه تاریخ پایانی با دادن تاریخ شروع
public string ShamsiDateAddDay( int tarykhShamsiYear,int tarykhShamsiMonth,string tarykhShamsiDay,int AddedDays)
{
System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
DateTime inDate = default(DateTime);
DateTime outDate = default(DateTime);
string result = null;
inDate = pc.ToDateTime(tarykhShamsiYear, tarykhShamsiMonth, tarykhShamsiDay,0, 0,0, 0);
outDate = pc.AddDays(inDate, AddedDays);
result = (pc.GetYear(outDate) > 9 ? pc.GetYear(outDate).ToString() : "0" + pc.GetYear(outDate)) + "/" + (pc.GetMonth(outDate) > 9 ? pc.GetMonth(outDate).ToString() : "0" + pc.GetMonth(outDate)) + "/" + (pc.GetDayOfMonth(outDate) > 9 ? pc.GetDayOfMonth(outDate).ToString() : "0" + pc.GetDayOfMonth(outDate));
return result;
}