PDA

View Full Version : سوال: تاریخ امروز در چندمین هفته سال جاری قرار دارد؟(تاریخ شمسی)



4m41991
دوشنبه 06 آذر 1396, 10:17 صبح
سلام دوستان

میخواستم وقتی یک تاریخی رو با dateTimeSelector انتخاب میکنم برام مشخص کنه که این تاریخ انتخابی در چندمین هفته سال جاری (شمسی) قرار داره!!

من از این DateTimeSelector استفاده میکنم.

http://blog.mchehraz.com/?p=57

4m41991
دوشنبه 06 آذر 1396, 11:23 صبح
آقا حل شد.
از این کد استفاده کردم.
using System.Globalization;

private void button1_Click(object sender, EventArgs e)
{
DateTime? ds = dateTimeSelector1.Value;
DateTime dt = ds.Value;

CultureInfo myCI = new CultureInfo("fa-IR");
Calendar myCal = myCI.Calendar;
CalendarWeekRule myCWR = myCI.DateTimeFormat.CalendarWeekRule;
DayOfWeek myFirstDOW = myCI.DateTimeFormat.FirstDayOfWeek;

textBox1.Text = string.Format("Therefore, the current week is Week {0} of the current year.", myCal.GetWeekOfYear(dt, myCWR, myFirstDOW));

}

که البته قبلش یه کلاس با اسم PersianCalendar تو برنامه ایجاد کردم و کد زیر رو داخلش وارد کردم :

using System;using System.Globalization;
using System.Reflection;
using System.Threading;


public class Cultures
{
public static void InitializePersianCulture()
{
InitializeCulture("fa-ir", new[] { "ی", "د", "س", "چ", "پ", "ج", "ش" },
new[] { "یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" },
new[]
{
"فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی",
"بهمن", "اسفند", ""
},
new[]
{
"فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی",
"بهمن", "اسفند", ""
}, "ق.ظ. ", "ب.ظ. ", "yyyy/MM/dd", new PersianCalendar());
}


public static void InitializeCulture(string culture, string[] abbreviatedDayNames, string[] dayNames,
string[] abbreviatedMonthNames, string[] monthNames, string amDesignator,
string pmDesignator, string shortDatePattern, Calendar calendar)
{
var calture = new CultureInfo(culture);
var info = calture.DateTimeFormat;
info.AbbreviatedDayNames = abbreviatedDayNames;
info.DayNames = dayNames;
info.AbbreviatedMonthNames = abbreviatedMonthNames;
info.MonthNames = monthNames;
info.AMDesignator = amDesignator;
info.PMDesignator = pmDesignator;
info.ShortDatePattern = shortDatePattern;
info.FirstDayOfWeek = DayOfWeek.Saturday;
var cal = calendar;
var type = typeof(DateTimeFormatInfo);
var fieldInfo = type.GetField("calendar", BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic);
if (fieldInfo != null)
fieldInfo.SetValue(info, cal);
var field = typeof(CultureInfo).GetField("calendar", BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic);
if (field != null)
field.SetValue(calture, cal);
Thread.CurrentThread.CurrentCulture = calture;
Thread.CurrentThread.CurrentUICulture = calture;
CultureInfo.CurrentCulture.DateTimeFormat = info;
CultureInfo.CurrentUICulture.DateTimeFormat = info;
}
}