PDA

View Full Version : سوال: درج تاریخ یک ماه بعد !



masoud_dmp
پنج شنبه 14 شهریور 1392, 16:42 عصر
با سلام خدمت دوستان عزیز
من کلاس تاریخ فارسی زیر رو از یکی از دوستانم گرفتم که خروجیش تاریخ جاری بصورت فارسیه
حالا مشکل من اینجاست که چطوری با دستکاری اون میتونم تاریخ دقیقا یک ماه بعد رو بدست بیارم ؟


using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Globalization;

public class Date_
{
PersianCalendar ps = new PersianCalendar();
public string Year_;
public string Month_;
public string Day;
public string Week;
public string milSecound;
public Date_()
{
milSecound = ps.GetMilliseconds(System.DateTime.Now).ToString() ;
Year_ = ps.GetYear(System.DateTime.Now).ToString();
Month_ = ps.GetMonth(System.DateTime.Now).ToString();
Day = ps.GetDayOfMonth(System.DateTime.Now).ToString();
Week = ps.GetDayOfWeek(System.DateTime.Now).ToString();
if (int.Parse(Day) < 10) Day = "0" + Day;
if (int.Parse(Month_) < 10) Month_ = "0" + Month_;
}

public string now_NoSlash()
{
string Year_ = ps.GetYear(System.DateTime.Now).ToString();
string Month_ = ps.GetMonth(System.DateTime.Now).ToString();
string Day = ps.GetDayOfMonth(System.DateTime.Now).ToString();
string Week = ps.GetDayOfWeek(System.DateTime.Now).ToString();
if (int.Parse(Day) < 10) Day = "0" + Day;
if (int.Parse(Month_) < 10) Month_ = "0" + Month_;
string Today = Year_ + Month_ + Day;
return Today;
}
public int Curent_Year()
{
string Year_ = ps.GetYear(System.DateTime.Now).ToString();
return int.Parse(Year_);
}
public string Curent_month_String()
{
int Month_ = int.Parse(ps.GetMonth(System.DateTime.Now).ToStrin g());
string fidback = "1";
switch (Month_)
{
case 1:
fidback = "فروردین";
break;
case 2:
fidback = "اردیبهشت";
break;
case 3:
fidback = "خرداد";
break;
case 4:
fidback = "تیر";
break;
case 5:
fidback = "مرداد";
break;
case 6:
fidback = "شهریور";
break;
case 7:
fidback = "مهر";
break;
case 8:
fidback = "آبان";
break;
case 9:
fidback = "آذر";
break;
case 10:
fidback = "دی";
break;
case 11:
fidback = "بهمن";
break;
case 12:
fidback = "اسفند";
break;
}
return fidback;
}


public string Curent_Month_Int()
{
string Month_ = ps.GetMonth(System.DateTime.Now).ToString();
if (Month_.Length == 1)
return "0" + Month_;
else
return Month_;
}
public int Curent_Day()
{
string Day = ps.GetDayOfMonth(System.DateTime.Now).ToString();
return int.Parse(Day);
}
public string Curent_Day_Week()
{
string Week = ps.GetDayOfWeek(System.DateTime.Now).ToString();
if (Week == "Saturday") Week = " شنبه";
if (Week == "Sunday") Week = "یکشنبه";
if (Week == "Monday") Week = "دوشنبه";
if (Week == "Tuesday") Week = "سه شنبه";
if (Week == "Wednesday") Week = "چهار شنبه";
if (Week == "Thursday") Week = "پنج شنبه";
if (Week == "Friday") Week = "جمعه";
return Week;
}
public string curent_time()
{
string h = ps.GetHour(System.DateTime.Now).ToString();
string m = ps.GetMinute(System.DateTime.Now).ToString();
string s = ps.GetSecond(System.DateTime.Now).ToString();
return h + ":" + m + ":" + s;
}
public string Curent_time_noSlash()
{
string h = ps.GetHour(System.DateTime.Now).ToString();
string m = ps.GetMinute(System.DateTime.Now).ToString();
string s = ps.GetSecond(System.DateTime.Now).ToString();
return h + m + s;
}
public string Curent_Time_Date()
{
return (Curent_Day_Week() + " " + Curent_Day() + " " + Curent_month_String() + " " + Curent_Year() + " " + curent_time());
}
public string Curent_Date()
{
return (Curent_Day_Week() + " " + Curent_Day() + " " + Curent_month_String() + " " + Curent_Year());
}

مسئله اصلی من اینه که تونستم ماه (فقط ماه) رو به ماه بعدی تبدیل کنم ولی تکلیف هفته و روز چی میشه
(واضح تر بگم : مثلا اگه 31 شهریور باشیم ماه بعد روز 31 مهر حساب میکنه ! خنده دار نیست ؟)

کدی که من دستکاری کردم اینه :

public string Next_month_String()
{
int Month_ = int.Parse(ps.GetMonth(System.DateTime.Now).ToStrin g()) + 1;
string fidback = "1";
switch (Month_)
{
case 1:
fidback = "فروردین";
break;
case 2:
fidback = "اردیبهشت";
break;
case 3:
fidback = "خرداد";
break;
case 4:
fidback = "تیر";
break;
case 5:
fidback = "مرداد";
break;
case 6:
fidback = "شهریور";
break;
case 7:
fidback = "مهر";
break;
case 8:
fidback = "آبان";
break;
case 9:
fidback = "آذر";
break;
case 10:
fidback = "دی";
break;
case 11:
fidback = "بهمن";
break;
case 12:
fidback = "اسفند";
break;
}
return fidback;
}

abdullah20
پنج شنبه 14 شهریور 1392, 18:30 عصر
همو مثالی که خودتون زدید
مثلا تاریخ امروز 1392/6/31 هستش
حالا شما میخواید در یک ماه دیگه چه تاریخی بدست بیاد؟
92/7/30

واگر 92/6/6 بود
تاریخ بعدی
92/7/6 باشه؟

kazem235
پنج شنبه 14 شهریور 1392, 19:09 عصر
اول ببین تو نیمه اول سالی یا دوم.بعد برای نیمه اول 31 روز به تاریخ جاری اضافه کن اگر نیمه دوم بودی 30 روز به تاریخ جاری اضافه کن.

Mahmoud Zaad
پنج شنبه 14 شهریور 1392, 19:31 عصر
و ماه اسفند؟

aliagamon
پنج شنبه 14 شهریور 1392, 19:48 عصر
من یه چیزی رو نفهمیدم شما میخواین که 1392/6/31 رو بکنه 7/30
یعنی مثلا خروجی یه تاریخ مثل این چی باید باشه:
1392/11/30

masoud_dmp
جمعه 15 شهریور 1392, 07:57 صبح
من خیلی مشکلم رو پیچوندم :چشمک:
فرض کنید مثلا میخوام مثل سایت ایستگاه(نیازمندیهای اینترنتی) برای آگهی های کاربران یک ماه تاریخ بزارم
چیزی که من به ذهنم میرسه اینه که یه تاریخ start که میشه تاریخ جاری و یه تاریخ expire که میشه تاریخ ماه بعد رو در بانک بزارم
تاریخ ماه جاری رو که با این کلاس میارم ، ولی تاریخ ماه بعد رو چیکارکنم ؟
(امیدوارم متوجه منظورم شده باشید)

hossein_sh2008
جمعه 15 شهریور 1392, 21:59 عصر
با سلام و خسته نباشید
دوست عزیز شما می تونید از کامپوننت آقای فراهانی برای تبدیل تاریخ میلادی به شمسی استفاده کنیین که امکانات زیادی هم داره
اضافه کردن روز
Perdate+=1
اضافه کردن ماه
perdate>>1

اینم لینکش
http://barnamenevis.org/showthread.php?90830-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%A8%D9%87-%D9%87%D8%B1-%D8%AD%D8%A7%D9%84%D8%AA%DB%8C-%DA%A9%D9%87-%D8%AF%D9%88%D8%B3%D8%AA-%D8%AF%D8%A7%D8%B4%D8%AA%D9%87-%D8%A8%D8%A7%D8%B4%DB%8C%D8%AF

amir200h
جمعه 15 شهریور 1392, 22:29 عصر
چه کاریه. خوب شما تاریخ امروز که میلادیه رو به شمسی تبدیل میکنین که تاریخ امروز رو بدست بیارین!!!
خوب حالا شما تاریخ 30 روز بعد میلادی رو بده به کلاست و تاریخ 1 مته بعد شمسی رو بدست بیار
کد زیر هم تاریخ 30 روز بعد رو بدست میاره
PersianCalendar pc = new PersianCalendar();
DateTime dtnext;
dtnext = DateTime.Now;
dtnext = dtnext.AddDays(30);
string nextDay= pc.GetYear(dtnext).ToString("D2") + "/" + pc.GetMonth(dtnext).ToString("D2") + "/" +
pc.GetDayOfMonth(dtnext).ToString("D2");

kazem235
یک شنبه 17 شهریور 1392, 18:11 عصر
و ماه اسفند؟
هر چهار سال یکبار 29 روز اضافه کنه.

Mahmoud Zaad
یک شنبه 17 شهریور 1392, 18:40 عصر
نه این قانون همیشه برقرار نیست. اینجا (http://fa.wikipedia.org/wiki/%D8%B3%D8%A7%D9%84_%DA%A9%D8%A8%DB%8C%D8%B3%D9%87) نحوه تشخیص سالهای کبیسه گفته شده.

roolinjax
یک شنبه 17 شهریور 1392, 19:06 عصر
سلام خوب چه کاریه ؟
بجای AddDays از (AddMonths(1 استفاده کن
خیلی هم دقیق تره
دیگه نیازی به حساب کتاب نیمه اول سال و دوم سال و کبیسه و غیر کبیسه نداره