من میخوان مثا تاریخ روز +10 کنم یا منهای 5 چه باید کرد
مثال 1389/01/01 -5
من میخوان مثا تاریخ روز +10 کنم یا منهای 5 چه باید کرد
مثال 1389/01/01 -5
دوست عزيز من از روش زير استفاده مي كنم
PersianCalendar PCalendar = new PersianCalendar();
txtNaghd.text = PCalendar.GetDayOfMonth(DateTime.Now.AddDays(10)). ToString();
البته با اين كد فقط روز را محاسبه كردم از همين روش ميتوني ماه و سال رو هم محاسبه كني
آخرین ویرایش به وسیله amireto : جمعه 13 خرداد 1390 در 23:08 عصر
البته يكي از دوستان در همين سايت براي تاريخ شمسي چنين كلاسي رو معرفي كردند
public static class ShamsiDate
{
static PersianCalendar persianCalendar = new PersianCalendar();
public static string ToShamsi(this DateTime miladiDate)
{
string year = persianCalendar.GetYear(miladiDate).ToString();
string month = persianCalendar.GetMonth(miladiDate).ToString().Pa dLeft(2, '0');
string day = persianCalendar.GetDayOfMonth(miladiDate).ToString ().PadLeft(2, '0');
return year + "/" + month + "/" + day;
}
public static DateTime ToMiladi(this string shamsiDate)
{
int year = int.Parse(shamsiDate.Substring(0, 4));
int month = int.Parse(shamsiDate.Substring(5, 2));
int day = int.Parse(shamsiDate.Substring(8, 2));
return persianCalendar.ToDateTime(year, month, day, 0, 0, 0, 0);
}
}
اگر از اين كلاس استفاده كنيد
مثال:
MessageBox.Show( DateTime.Now.AddDays(10).ToShamsi());
براي كسر هم عدد منفي بده
دوست عزیز تاریخ من صرفا تاریخ روز نیست من میخوام به تاریخ شمسی ذخیره شده تو بانکم چند روز اضافه کنم[/CODE]
اگر از اين كلاس استفاده كنيد
مثال:
MessageBox.Show( DateTime.Now.AddDays(10).ToShamsi());
براي كسر هم عدد منفي بده
کلاس بالا چطوری فراخوانی میشه هر کاری کردم نشد؟
چطوری میشه ازش کم کرد؟
سلام دوست عزیز باید یک کلاس جمع و تفریق ایجاد کنید.
public string time(string BackTime, string Month_Last, string NowTime_Last)
{
long Month = Convert.ToInt32(Month_Last);
long Year_Now = Convert.ToInt64(NowTime_Last.Trim().Substring(0, 4)), Month_Now = Convert.ToInt64(NowTime_Last.Trim().Substring(5, 2)), Day_Now = Convert.ToInt64(NowTime_Last.Trim().Substring(8, 2));
if (Month != 0)
{
if (Month >= 12)
{
Year_Now += (Month / 12);
Month -= ((Month / 12) * 12);
}
if ((Month_Now + Month) <= 12)
{
Month_Now += Month;
}
else
{
Month_Now += Month - 12;
Year_Now++;
}
}
if (Month_Now > 6 && Day_Now == 31)
Day_Now--;
BackTime = string.Format("{0}/{1:d2}/{2:d2}", Year_Now, Month_Now, Day_Now);
return BackTime;
}
اینم کلاس جمع تاریخ است.یکی به تاریخ فعلی زیاد می کنه.
موفق باشید
اینم هست
namespace Abshar
{
class PlusDay
{
public string time(string Status, string Day_Last, string NowTime_Last)
{
string aa=NowTime_Last.Substring(5, 2);
long Day = Convert.ToInt64(Day_Last);
long Year_Now = Convert.ToInt64(NowTime_Last.Trim().Substring(0, 4)), Month_Now = Convert.ToInt64(NowTime_Last.Trim().Substring(5, 2)), Day_Now = Convert.ToInt64(NowTime_Last.Trim().Substring(8, 2));
if (Status == "1")
{
Plus:
if (Day != 0)
{
if (Day >= 1)
{
if (Month_Now <= 6 && Day_Now <= 31)
{
if (Day_Now == 31)
{
Month_Now++;
Day_Now = 1;
}
else
Day_Now++;
}
else if (Month_Now > 6 && Day_Now <= 30)
{
if (Day_Now == 30)
{
if (Month_Now == 12)
{
Year_Now++;
Month_Now = 1;
Day_Now = 1;
}
else
{
Month_Now++;
Day_Now = 1;
}
}
else
Day_Now++;
}
}
if (Day != 0)
{
Day--;
goto Plus;
}
}
else
return Status = string.Format(" {0}/{1:d2}/{2:d2}", Year_Now, Month_Now, Day_Now);
}
if (Status == "0")
{
Minez:
if (Day != 0)
{
if (Day >= 1)
{
if (Month_Now <= 6 && Day_Now >= 1)
{
if (Day_Now == 1)
{
if (Month_Now == 1)
{
Year_Now--;
Month_Now = 12;
Day_Now = 30;
}
else
{
Month_Now--;
Day_Now = 31;
}
}
else
Day_Now--;
}
else if (Month_Now > 6 && Day_Now >= 1)
{
if (Day_Now == 1)
{
Month_Now--;
Day_Now = 30;
}
else
Day_Now--;
}
}
if (Day != 0)
{
Day--;
goto Minez;
}
}
else
return Status = string.Format(" {0}/{1:d2}/{2:d2}", Year_Now, Month_Now, Day_Now);
}
return Status;
}
}
}
ميتونيد بصورت زير عمل كنيد
System.Globalization.PersianCalendar p = new System.Globalization.PersianCalendar();
DateTime dt = p.ToDateTime(1390, 3, 14, 0, 0, 0, 0);
dt = dt.AddDays(10);
MessageBox.Show(p.GetYear(dt) + "/" + p.GetMonth(dt) + "/" + p.GetDayOfMonth(dt));
با تشکر از جواب های دوستان
فقط یه نکته من فقط به تاریخ روز نمی خوام اضافه کنم آیا با کلاس فوق حل میشه؟ مثلا سال گذشته 5-1389/05/21
دوست عزيزدوست عزیز تاریخ من صرفا تاریخ روز نیست من میخوام به تاریخ شمسی ذخیره شده تو بانکم چند روز اضافه کنم
کلاس بالا چطوری فراخوانی میشه هر کاری کردم نشد؟
همونطور كه ديدي راههاي زيادي است
طبق روش من ابتدا بهتره تاريخ شمسي كه داري به نوع datetime تبديل كني اونوقت از تابع addDay براي جمع و تفريق استفاده كن و سپس دوباره به شمسي برگردون
براي استفاده از كلاس هم خيلي ساده با استفاده ازAdd new item يك كلاس با همين نام و كد به پروژه اضافه كن
همون طور كه گفتم به جاي عدد مثبت عدد منفي بگذارچطوری میشه ازش کم کرد؟
MessageBox.Show( DateTime.Now.AddDays(-10).ToShamsi());
1
MessageBox.Show( DateTime.Now.AddDays(-10).ToShamsi());
نه دوست من من کلاسو ایجاد کردم الان میخوام تو فرم ازش استفاده کنم چطور فراخوانی کنمش
منظورم نمونه ساختن ازشه
ToShamsi()); نمی شناسه
بعد چطوری بگم به این تاریخ میلادی اضافه کنه نه تاریخ امروز
آخرین ویرایش به وسیله shahin60 : شنبه 14 خرداد 1390 در 17:48 عصر
sing System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;
namespace نم اسپيس پروژت
{
public static class ShamsiDate
{
static PersianCalendar persianCalendar = new PersianCalendar();
public static string ToShamsi(this DateTime miladiDate)
{
string year = persianCalendar.GetYear(miladiDate).ToString();
string month = persianCalendar.GetMonth(miladiDate).ToString().Pa dLeft(2, '0');
string day = persianCalendar.GetDayOfMonth(miladiDate).ToString ().PadLeft(2, '0');
return year + "/" + month + "/" + day;
}
public static DateTime ToMiladi(this string shamsiDate)
{
int year = int.Parse(shamsiDate.Substring(0, 4));
int month = int.Parse(shamsiDate.Substring(5, 2));
int day = int.Parse(shamsiDate.Substring(8, 2));
return persianCalendar.ToDateTime(year, month, day, 0, 0, 0, 0);
}
}
}
همين كلاس رو اضافه كن و ديگر نبايد كاري كني
نوع داده اي dataTime درست كن و تاريختو درونش قرار بده
حال ازش اضافه كن
DataTime dt=New DataTime();
dt=???;
dt.AddDays(-10)
بازم toshamsi() نمی شناسه
حل شد دمت گرم