PDA

View Full Version : سوال: اضافه کردن روز به تاریخ



keyvan_s89
جمعه 18 اسفند 1391, 10:38 صبح
سلام من تو برنامم یه قسمت دارم که میخوام 7 روز به تاریخ شمسی اضافه بشه.اینطوری نوشتم

PersianCalendar pe = new PersianCalendar();
string sal = pe.GetYear(DateTime.Now).ToString();
string mah = pe.GetMonth(DateTime.Now).ToString();
string roz = pe.GetDayOfMonth(DateTime.Now.AddDays(7)).ToString ();
textBox3.Text = sal + "/" + mah + "/" + roz;


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

مثلا اگه امروز 1391/12/18 باشه و من 15 روز به تاریخ اضافه کنم تاریخ اینجوری نمیشه 1392/01/03
چیکارش کنم ؟ البته میدونم نباید تویه تکست باکس اینجوری نشون بده چون هر کدومش جدا میشه.

esafb52
جمعه 18 اسفند 1391, 11:00 صبح
با سلام من اینجوری حلش کردم
ببین چقد میخوای اضافه کنی جدا جدا اضافه کن جواب میده


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Globalization;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public void datechange(int a, int b, int c)
{
PersianCalendar pe = new PersianCalendar();
string sal = pe.GetYear(DateTime.Now.AddYears(a)).ToString();
string mah = pe.GetMonth(DateTime.Now.AddMonths(b)).ToString();
string roz = pe.GetDayOfMonth(DateTime.Now.AddDays(c)).ToString ();
textBox1.Text = sal + "/" + mah + "/" + roz;
}
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
}

private void Form1_Load(object sender, EventArgs e)
{

PersianCalendar pe = new PersianCalendar();
string sal = pe.GetYear(DateTime.Now).ToString();
string mah = pe.GetMonth(DateTime.Now).ToString();
string roz = pe.GetDayOfMonth(DateTime.Now).ToString();
datechange(1, 1, 1);

}

}
}

keyvan_s89
جمعه 18 اسفند 1391, 11:07 صبح
من میخوام خود برنامه تشخیص بده که مثلا اگه امروز 91/12/20 و من فقط 12 روز به، روز تاریخ اضافه کردم بشه 92/01/02

keyvan_s89
جمعه 18 اسفند 1391, 11:38 صبح
کسی نمیدونه ؟؟؟؟؟

esafb52
جمعه 18 اسفند 1391, 12:33 عصر
دوست عزیز تشکر یادت نره 20 دقیقه طول کشید
حوصله فکر کردن نداشتم

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Globalization;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public void datechange(int a)
{
int aa, bb, cc, dd,mm;
PersianCalendar pe = new PersianCalendar();
string sal1 = pe.GetYear(DateTime.Now).ToString();
string mah1 = pe.GetMonth(DateTime.Now).ToString();
string roz1 = pe.GetDayOfMonth(DateTime.Now).ToString();
aa = Int32.Parse(sal1);
bb = Int32.Parse(mah1);
cc = Int32.Parse(roz1);
dd=cc+a;
if(dd>30)

{
dd -=30 ;
if (bb==12)
{
bb = 1;
aa++;
}
}


textBox1.Text = aa + "/" + bb + "/" + dd;

}
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
}

private void Form1_Load(object sender, EventArgs e)
{

PersianCalendar pe = new PersianCalendar();
string sal = pe.GetYear(DateTime.Now).ToString();
string mah = pe.GetMonth(DateTime.Now).ToString();
string roz = pe.GetDayOfMonth(DateTime.Now).ToString();
datechange(14);

}

}
}

keyvan_s89
جمعه 18 اسفند 1391, 12:44 عصر
دوست عزیز تشکر یادت نره 20 دقیقه طول کشید
حوصله فکر کردن نداشتم

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Globalization;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public void datechange(int a)
{
int aa, bb, cc, dd,mm;
PersianCalendar pe = new PersianCalendar();
string sal1 = pe.GetYear(DateTime.Now).ToString();
string mah1 = pe.GetMonth(DateTime.Now).ToString();
string roz1 = pe.GetDayOfMonth(DateTime.Now).ToString();
aa = Int32.Parse(sal1);
bb = Int32.Parse(mah1);
cc = Int32.Parse(roz1);
dd=cc+a;
if(dd>30)

{
dd -=30 ;
if (bb==12)
{
bb = 1;
aa++;
}
}


textBox1.Text = aa + "/" + bb + "/" + dd;

}
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
}

private void Form1_Load(object sender, EventArgs e)
{

PersianCalendar pe = new PersianCalendar();
string sal = pe.GetYear(DateTime.Now).ToString();
string mah = pe.GetMonth(DateTime.Now).ToString();
string roz = pe.GetDayOfMonth(DateTime.Now).ToString();
datechange(14);

}

}
}


مرسی ولی هنوز هم مشکل داره مثلا اگه 45 روز به تاریخ اضافه کنیم میشه 1392/01/33
من با تاریخ انگلیسی مشکلی ندارم ولی شمسی رو نمیدونم چیکارش کنم.

abbas.oveissi
جمعه 18 اسفند 1391, 12:54 عصر
کسی نمیدونه ؟؟؟؟؟

نمیشد با استفاده از توابع خود datetime به تاریخ میلادی 10 روز اضافه کنی و بعدش همون رو تبدیل به شمسی کنی؟مطمئن نیستم،اما حدس میزنم بشه
میتونی از dll تاریخ شمسی هم استفاده کنی

esafb52
جمعه 18 اسفند 1391, 13:03 عصر
این رو تست کنین


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Globalization;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public void datechange(int a)
{
int aa, bb, cc, dd,mm;
PersianCalendar pe = new PersianCalendar();
string sal1 = pe.GetYear(DateTime.Now).ToString();
string mah1 = pe.GetMonth(DateTime.Now).ToString();
string roz1 = pe.GetDayOfMonth(DateTime.Now).ToString();
aa = Int32.Parse(sal1);
bb = Int32.Parse(mah1);
cc = Int32.Parse(roz1);
dd=cc+a;
if(dd>30)

{
dd -=30 ;
if (bb==12)
{
bb = 1;
aa++;
}
}

while (dd > 30)
{
dd -= 30;
bb++;
if (bb==12)
{
bb = 1;
a++;
}

}



textBox1.Text = aa + "/" + bb + "/" + dd;

}
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
}

private void Form1_Load(object sender, EventArgs e)
{

PersianCalendar pe = new PersianCalendar();
string sal = pe.GetYear(DateTime.Now).ToString();
string mah = pe.GetMonth(DateTime.Now).ToString();
string roz = pe.GetDayOfMonth(DateTime.Now).ToString();
datechange(85);

}

}
}

abbas.oveissi
جمعه 18 اسفند 1391, 13:08 عصر
مرسی ولی هنوز هم مشکل داره مثلا اگه 45 روز به تاریخ اضافه کنیم میشه 1392/01/33
من با تاریخ انگلیسی مشکلی ندارم ولی شمسی رو نمیدونم چیکارش کنم.

این کد ببین کارتو راه میندازه :

DateTime d = DateTime.Now;
d=d.AddDays(30);
PersianCalendar pe = new PersianCalendar();
string sal1 = pe.GetYear(d).ToString();
string mah1 = pe.GetMonth(d).ToString();
string roz1 = pe.GetDayOfMonth(d).ToString();
Console.WriteLine(sal1 + " " + mah1 + " " + roz1);


سوال : چه جوری کد های شما اون شکلی میشه :( ؟یعنی توی کادر میرن

keyvan_s89
جمعه 18 اسفند 1391, 13:21 عصر
این کد ببین کارتو راه میندازه :

DateTime d = DateTime.Now;
d=d.AddDays(30);
PersianCalendar pe = new PersianCalendar();
string sal1 = pe.GetYear(d).ToString();
string mah1 = pe.GetMonth(d).ToString();
string roz1 = pe.GetDayOfMonth(d).ToString();
Console.WriteLine(sal1 + " " + mah1 + " " + roz1);


سوال : چه جوری کد های شما اون شکلی میشه :( ؟یعنی توی کادر میرن
مرسی دنبال همین میگشتم.
منظورتو نفمیدم کدوم کادر

abbas.oveissi
جمعه 18 اسفند 1391, 13:26 عصر
مرسی دنبال همین میگشتم.
منظورتو نفمیدم کدوم کادر

خواهش
هیچی درست شد قضیه کادر دور کد :دی

esafb52
جمعه 18 اسفند 1391, 13:31 عصر
من فکر کردم دنبال یه متد برای محاسبه اش بودی الان روند محاسبه تاریخ برات درست شد یا نه

keyvan_s89
جمعه 18 اسفند 1391, 13:33 عصر
آره مرسی دوست عزیز حل شد