تاحالا خیلی سوال و توضیح در مورد چندین روز سال دیدن
اما من برعکس این سوال دارم یک عدد دارم میخوام بدونم تاریخ اون چی میشه
مثلا 196 روز سال چه تاریخی میشه؟
Printable View
تاحالا خیلی سوال و توضیح در مورد چندین روز سال دیدن
اما من برعکس این سوال دارم یک عدد دارم میخوام بدونم تاریخ اون چی میشه
مثلا 196 روز سال چه تاریخی میشه؟
دوستان کسی نیست به من کمک کنه؟
من با شماره هفته یا روز چطور میتونم تاریخ اون هفته یا اون روز پیدا کنم؟؟؟؟
سلام
این نمونه برای تاریخ میلادی
این سوال یه بنده خدایی بوده که مشکل داشته، جواب اون پستی هست که تیک خورده.
سلام
این متد ، دوتا پارامتر میگیره ، اولی تاریخ میلای که مبنای سال مورد محاسبه هست و پارامتر دوم هم همون شماره روز که بهش اشاره کردین ، خروجیش هم تاریخ مورد نظر به شمسی هست
private string GetDateByDay(DateTime date, int dayNumber)
{
var persianCalendar = new PersianCalendar();
#region throw exception on wrong day number input
if (!persianCalendar.IsLeapYear(persianCalendar.GetYe ar(date)) && (dayNumber < 1 || dayNumber > 365))
throw new Exception("Invalid Day Number");
if (persianCalendar.IsLeapYear(persianCalendar.GetYea r(date)) && (dayNumber < 1 || dayNumber > 366))
throw new Exception("Invalid Day Number");
#endregion
var targetDate = persianCalendar.ToDateTime(persianCalendar.GetYear (date), 1, 1, 0, 0, 0, 1).AddDays(dayNumber - 1);
return $"{persianCalendar.GetYear(targetDate)}/{persianCalendar.GetMonth(targetDate):D2}/{persianCalendar.GetDayOfMonth(targetDate):D2}";
}
این هم یک شکل دیگه هست ، با این تفاوت که سال شمسی رو بعنوان پارامتر اول میگیره (سال به صورت 4 رقمی) و بقیه موارد مثل متد بالا هست
private string GetDateByDay(int shamsiYear, int dayNumber)
{
var persianCalendar = new PersianCalendar();
#region throw exception on wrong day number input
if (!persianCalendar.IsLeapYear(shamsiYear) && (dayNumber < 1 || dayNumber > 365))
throw new Exception("Invalid Day Number");
if (persianCalendar.IsLeapYear(shamsiYear) && (dayNumber < 1 || dayNumber > 366))
throw new Exception("Invalid Day Number");
#endregion
var startdate = persianCalendar.ToDateTime(shamsiYear, 1, 1, 0, 0, 0, 1).AddDays(dayNumber - 1);
return $"{persianCalendar.GetYear(startdate)}/{persianCalendar.GetMonth(startdate):D2}/{persianCalendar.GetDayOfMonth(startdate):D2}";
}
استفادش هم که به اینصورت میشه
مورد اول
var result = GetDateByDay(DateTime.Now, days);
مورد دوم
var result = GetDateByDay(1397, days);
کاراکتر $ یکی از ویژگی های خوب C# 6 هست
میتونید به شکل زیر هم تغییرش بدید
return string.Format(@"{0}/{1}/{2}", persianCalendar.GetYear(startdate), persianCalendar.GetMonth(startdate).ToString("00") , persianCalendar.GetDayOfMonth(startdate).ToString( "00"));
موفق باشید