PDA

View Full Version : ایجاد تاریخ سررسید



Iman7228
سه شنبه 07 آذر 1396, 15:04 عصر
سلام اساتید.

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

ورودی : تاریخ اولین قسط 1396/09/01 - تعداد اقساط 7

خروجی :
1396/09/01
1396/10/01
1396/11/01
1396/12/01
1397/01/01
1397/02/01
1397/03/01

کسی هست کمک کنه؟



for (int i = 0; i < Convert.ToInt32(txtTedad.Text); i++)
{
string[] strsplit = txtDate.Text.Split('/');
var pc = new PersianCalendar();
DateTime dt = pc.ToDateTime(Int32.Parse(strsplit[0]), Int32.Parse(strsplit[1]), Int32.Parse(strsplit[2]), 0, 0, 0, 0);
dt = pc.AddMonths(dt, Int32.Parse(txtTedad.Text));
var index = dataGridViewX1.Rows.Add();


dataGridViewX1.Rows[0].Cells[1].Value = txtDate.Text;
dataGridViewX1.Rows[index].Cells[1].Value = pc.GetYear(dt).ToString() + "/" + pc.GetMonth(dt).ToString() + "/" + pc.GetDayOfMonth(dt).ToString();
dataGridViewX1.Rows[index].Cells[2].Value = txtaghsat.Text.Trim();


}

mrsp1988
سه شنبه 07 آذر 1396, 16:27 عصر
سلام اول تاریخ رو تبدیل کن به عدد بعد هر بار اونو با 30 جمع کن و دوباره تبدیل کن به تاریخ
مثلا
1396/02/20
((20) + (30 * 02) + (360 * 1396))

Iman7228
سه شنبه 07 آذر 1396, 16:39 عصر
میشه با کد مثال بزنی؟

mrsp1988
سه شنبه 07 آذر 1396, 20:01 عصر
این کلاس رو به برنامه خودت اضافه کن بعد



using System;
using System.Data;
using System.Globalization;
using System.Linq;

namespace GoldenWorld
{
public static class Shamsi
{
public static string pdate(DateTime d)
{
PersianCalendar pc = new PersianCalendar();
string year = pc.GetYear(d).ToString();
string month;
string day = pc.GetDayOfMonth(d).ToString();
if (pc.GetMonth(d) < 10)
month = "0" + pc.GetMonth(d);
else
month = pc.GetMonth(d).ToString();
if (pc.GetDayOfMonth(d) < 10)
day = "0" + pc.GetDayOfMonth(d);
else
day = pc.GetDayOfMonth(d).ToString();
return string.Format(@"{0}/{1}/{2}",
year,
month,
day);
}

public enum PeriodType
{
Day,
Week,
Month,

//Season,
Year
}

public static string DateCalculation(string InputDate, PeriodType Type = PeriodType.Day, int PeriodSize = 0)
{
var persianCalendar = new PersianCalendar();

var dateParts = InputDate.Split('/').Select(datePart => int.Parse(datePart)).ToArray();
var today = persianCalendar.ToDateTime(dateParts[0], dateParts[1], dateParts[2], 0, 0, 0, 0, 0);

var nextMonth = persianCalendar.AddMonths(today, PeriodSize);

if (Type == PeriodType.Day)
{
nextMonth = persianCalendar.AddDays(today, PeriodSize);
}
else if (Type == PeriodType.Week)
{
nextMonth = persianCalendar.AddWeeks(today, PeriodSize);
}
else if (Type == PeriodType.Month)
{
nextMonth = persianCalendar.AddMonths(today, PeriodSize);
}
else if (Type == PeriodType.Year)
{
nextMonth = persianCalendar.AddYears(today, PeriodSize);
}

return pdate(nextMonth);
}
}
}


بعد با کد زیر فراخوانی کن



for (int i = 1; i < Convert.ToInt32(txtTedad.Text); i++)
{
MessageBox.Show(Shamsi.DateCalculation(txtDate.Tex t, Shamsi.PeriodType.Month, i));
}

Iman7228
سه شنبه 07 آذر 1396, 22:25 عصر
این کلاس رو به برنامه خودت اضافه کن بعد


بعد با کد زیر فراخوانی کن



for (int i = 1; i < Convert.ToInt32(txtTedad.Text); i++)
{
MessageBox.Show(Shamsi.DateCalculation(txtDate.Tex t, Shamsi.PeriodType.Month, i));
}






سپاسگزارم.درست شد.


for (int i = 1; i < Convert.ToInt32(txtTedad.Text); i++)
{
var index = dataGridViewX1.Rows.Add();
dataGridViewX1.Rows[index].Cells[1].Value = Shamsii.DateCalculation(txtDate.Text, Shamsii.PeriodType.Month, i);
}