PDA

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



علی فتحی
پنج شنبه 06 شهریور 1393, 02:09 صبح
چگونه یکسال به تاریخ شمسی در تکس باکس اضافه کنم

امیدوارم اقا محمد دیگه تاپیکو حذف نکنی

parvizwpf
پنج شنبه 06 شهریور 1393, 08:57 صبح
شما الان چطور تاریخ رو نشون میدید؟ از چه نوعی هست؟
در واقع میخوام بفهمم که چطور هست که بشه اونو جمع کرد.

helpsos
پنج شنبه 06 شهریور 1393, 09:22 صبح
من از persia.dll استفاده کردم
ببین کمکت می کنه
راهنماش رو هم بخون

arashsoft
پنج شنبه 06 شهریور 1393, 11:44 صبح
سلام و خسته نباشید

بدون استفاده از dll


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


namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}


System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
DateTime datetime = new DateTime();


private void Form1_Load(object sender, EventArgs e)
{
datetime = DateTime.Now;

label1.Text = pc.GetYear(datetime) + " / " + pc.GetMonth(datetime) + " / " + pc.GetDayOfMonth(datetime);
}
}
}

arashsoft
پنج شنبه 06 شهریور 1393, 11:53 صبح
اگر منظورتون این بود که یک تاریخ به تاریخ شمسی تبدیل شود



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;


namespace arash soft
{
public partial class Form1 : Form
{
System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
System.Globalization.HijriCalendar hc = new System.Globalization.HijriCalendar();
string date1;
DateTime datetime = new DateTime();


public Form1()
{
InitializeComponent();
}


private void button1_Click(object sender, EventArgs e)
{
//تبدیل تاریخ میلادی به شمسی و قمری

date1 = comboBox3.Text + "/" + comboBox2.Text + "/" + comboBox1.Text;
DateTime dt = DateTime.Parse(date1);
label1.Text = pc.GetYear(dt) + "/" + pc.GetMonth(dt) + "/" + pc.GetDayOfMonth(dt);
label9.Text = hc.GetYear(dt) + "/" + hc.GetMonth(dt) + "/" + hc.GetDayOfMonth(dt);
label10.Text = dt.Year + "/" + dt.Month + "/" + dt.Day;

//

//تبدیل تاریخ شمسی به میلادی و قمری

date1 = comboBox3.Text + "/" + comboBox2.Text + "/" + comboBox1.Text;
DateTime dt1 = pc.ToDateTime(int.Parse(comboBox3.Text), int.Parse(comboBox2.Text), int.Parse(comboBox1.Text), 0, 0, 0, 0);
label1.Text = date1;
label9.Text = hc.GetYear(dt1) + "/" + hc.GetMonth(dt1) + "/" + hc.GetDayOfMonth(dt1);
label10.Text = dt1.Year + "/" + dt1.Month + "/" + dt1.Day;

//


//تبدیل تاریخ قمری به شمسی و میلادی

date1 = comboBox3.Text + "/" + comboBox2.Text + "/" + comboBox1.Text;
DateTime dt2 = hc.ToDateTime(int.Parse(comboBox3.Text), int.Parse(comboBox2.Text), int.Parse(comboBox1.Text), 0, 0, 0, 0);
label1.Text = pc.GetYear(dt2) + "/" + pc.GetMonth(dt2) + "/" + pc.GetDayOfMonth(dt2);
label9.Text = date1;
label10.Text = dt2.Year + "/" + dt2.Month + "/" + dt2.Day;

}

veniz2008
پنج شنبه 06 شهریور 1393, 12:12 عصر
چگونه یکسال به تاریخ شمسی در تکس باکس اضافه کنم

سلام.
یکی از اصلی ترین دلایلی که تاپیک های ما خیلی طولانی میشه اینه که صورت سوال رو گنگ و نامشخص مطرح می کنیم. مثلا الان مشخص نیست شما تاریخ شمسی رو چطور در اختیار دارید. آیا کاربر دستی تایپ میکنه؟ آیا از سیستم می خونید؟ و ...
من فرض کردم که از سیستم بخونید. در چنین حالتی می تونید از متد AddYears برای اضافه کردن مقدار مورد نیاز به سال میلادی استفاده کنید و بعد معادل شمسی اونو بدست بیارید.

DateTime today = DateTime.Now;
System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
MessageBox.Show(pc.GetYear(today.AddYears(1)).ToSt ring());
موفق باشید.

علی فتحی
پنج شنبه 06 شهریور 1393, 14:53 عصر
تاریخ شمسی رو بصورت دستی وارد تکس باکس میکتم 1390/01/01 حالا توی تکس باکس دوم میخوام این وارد بشه 1391/01/01

علی فتحی
پنج شنبه 06 شهریور 1393, 14:59 عصر
قربون دستتون درست شد اینم جواب برای دیگران

private void maskedTextBoxAdv1_TextChanged(object sender, EventArgs e) { PersianCalendar p = new PersianCalendar(); maskedTextBoxAdv2.Text = p.GetYear(DateTime.Now.AddYears(1)).ToString() + "/" + p.GetMonth(DateTime.Now).ToString("0#") + "/" + p.GetDayOfMonth(DateTime.Now).ToString("0#");

علی فتحی
پنج شنبه 06 شهریور 1393, 15:49 عصر
باعرض سلام و تشکر از همه دوستان که لطف فرمودین.دوستان نمیدونم چرا متوجه سوال نمیش.اکثرا تاپیکها رو که نگاه میکنم سول پرسیدن فورا معلومه طرف چی میخواد
ولی نمیدونم اگه قراره تو سوال هم توضیحات بدیم پس سوال پرسیدنمون چی میشه.

عزیزان . دوباره تکرار میزنم .با اضافه کردن تاریخ دستی به اولی دومی یکسال بیشتر نشون داده بشه وصلام

parvizwpf
پنج شنبه 06 شهریور 1393, 16:47 عصر
الان جواب رو گرفتید؟ یا هنوز نه؟

veniz2008
پنج شنبه 06 شهریور 1393, 16:50 عصر
با اضافه کردن تاریخ دستی به اولی دومی یکسال بیشتر نشون داده بشه
از این استفاده کنید :

private void textBox1_TextChanged(object sender, EventArgs e)
{
if(textBox1.Text.Length == 10)
{
textBox2.Text = (Convert.ToInt32(textBox1.Text.Substring(0, 4)) + 1).ToString() + textBox1.Text.Substring(4);
}
}
موفق باشید.

علی فتحی
جمعه 07 شهریور 1393, 01:37 صبح
سلام اینم تاپیک همه سوالات برای تمام عزیزانی که اینجا رو نگاه میکنند
درضمن اگر استادان گرامی در جهت بهتر کردن روش کار کردن . تغییر بدن و اینجا بگذارن ممنون میشم
ویزوال 2010 فرم ورک .4

http://s5.picofile.com/file/8137651142/Ali.rar.html