-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathPersianDateExtensionMethods.cs
More file actions
63 lines (49 loc) · 2.51 KB
/
PersianDateExtensionMethods.cs
File metadata and controls
63 lines (49 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
using System;
using System.Globalization;
using System.Reflection;
namespace System
{
public static class PersianDateExtensionMethods
{
private static CultureInfo _Culture;
public static CultureInfo GetPersianCulture()
{
if (_Culture == null)
{
_Culture = new CultureInfo("fa-IR");
System.Globalization.Calendar cal = new PersianCalendar();
DateTimeFormatInfo formatInfo = _Culture.DateTimeFormat;
formatInfo.AbbreviatedDayNames = new[] { "ی", "د", "س", "چ", "پ", "ج", "ش" };
formatInfo.DayNames = new[] { "یکشنبه", "دوشنبه", "سه شنبه", "چهار شنبه", "پنجشنبه", "جمعه", "شنبه" };
formatInfo.AbbreviatedMonthNames
= formatInfo.MonthNames
= formatInfo.MonthGenitiveNames
= formatInfo.AbbreviatedMonthGenitiveNames
= new[] { "فروردین", "اردیبهشت", "خرداد", "تیر", "مرداد", "شهریور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
formatInfo.AMDesignator = "ق.ظ";
formatInfo.PMDesignator = "ب.ظ";
formatInfo.ShortDatePattern = "yyyy/MM/dd";
formatInfo.LongDatePattern = "dddd, dd MMMM,yyyy";
formatInfo.ShortTimePattern = "HH:mm:ss";
formatInfo.LongTimePattern = "HH:mm:ss";
formatInfo.FullDateTimePattern = "yyyy/MM/dd HH:mm:ss";
formatInfo.FirstDayOfWeek = DayOfWeek.Saturday;
FieldInfo fieldInfo = _Culture.GetType().GetField("calendar", BindingFlags.NonPublic | BindingFlags.Instance);
if (fieldInfo != null)
fieldInfo.SetValue(_Culture, cal);
FieldInfo info = formatInfo.GetType().GetField("calendar", BindingFlags.NonPublic | BindingFlags.Instance);
if (info != null)
info.SetValue(formatInfo, cal);
_Culture.NumberFormat.NumberDecimalSeparator = "/";
_Culture.NumberFormat.DigitSubstitution = DigitShapes.NativeNational;
_Culture.NumberFormat.NumberNegativePattern = 0;
}
return _Culture;
}
public static string ToPersianDateString(this DateTime date)
{
string format = "yyyy/MM/dd HH:mm:ss";
return date.ToLocalTime().ToString(format, GetPersianCulture());
}
}
}