use*_*747 25 c# datetime cultureinfo persian
在波斯语中打印c#DateTime最简单的方法是什么?目前我正在使用:
static public string PersianDateString(DateTime d)
{
CultureInfo faIR = new CultureInfo("fa-IR");
faIR.DateTimeFormat.Calendar = new PersianCalendar();
return d.ToString("yyyy/MM/dd", faIR);
}
Run Code Online (Sandbox Code Playgroud)
这引发了异常
不是给定文化的有效日历
Ash*_*rat 33
首先,您必须注意,您不能将Jalali日期放在DateTime对象中,您将在"1392/02/31"之类的日期中获得异常.
因此,您必须以字符串或自定义DateTime类型处理Jalali日期.
我建议您将日期保持为格里高利日期,并在需要显示时将其转换.
这是从DateTime对象获取波斯日期的扩展方法.
public static string GetPersianDate(this DateTime date)
{
PersianCalendar jc = new PersianCalendar();
return string.Format("{0:0000}/{1:00}/{2:00}", jc.GetYear(date), jc.GetMonth(date), jc.GetDayOfMonth(date));
}
//How to use it:
DateTime d = new DateTime(2014, 05, 21);
string s = d.GetPersianDate(); //1393/02/31
Run Code Online (Sandbox Code Playgroud)
然后当你有一个字符串格式的Jalali日期时,这里是获取格里高利日期的扩展方法:
public static DateTime GetDateTimeFromJalaliString(this string jalaliDate)
{
PersianCalendar jc = new PersianCalendar();
try
{
string[] date = jalaliDate.Split('/');
int year = Convert.ToInt32(date[0]);
int month = Convert.ToInt32(date[1]);
int day = Convert.ToInt32(date[2]);
DateTime d = jc.ToDateTime(year, month, day, 0, 0, 0, 0, PersianCalendar.PersianEra);
return d;
}
catch
{
throw new FormatException("The input string must be in 0000/00/00 format.");
}
}
//How to use it:
string pdate = "1392/02/31";
DateTime dateFromJalali = pdate.GetDateTimeFromJalaliString(); //{5/21/2014 12:00:00 AM}
Run Code Online (Sandbox Code Playgroud)
现在要处理额外的功能:
周名称:
public static string GetDayOfWeekName(this DateTime date)
{
switch (date.DayOfWeek)
{
case DayOfWeek.Saturday: return "????";
case DayOfWeek.Sunday: return "??????";
case DayOfWeek.Monday: return "??????";
case DayOfWeek.Tuesday: return "??? ????";
case DayOfWeek.Wednesday: return "????????";
case DayOfWeek.Thursday: return "???????";
case DayOfWeek.Friday: return "????";
default: return "";
}
}
//How to use it:
DateTime date = DateTime.Now;
string wname = date.GetDayOfWeekName();
Run Code Online (Sandbox Code Playgroud)
月份名称:
public static string GetMonthName(this DateTime date)
{
PersianCalendar jc = new PersianCalendar();
string pdate = string.Format("{0:0000}/{1:00}/{2:00}", jc.GetYear(date), jc.GetMonth(date), jc.GetDayOfMonth(date));
string[] dates = pdate.Split('/');
int month = Convert.ToInt32(dates[1]);
switch (month)
{
case 1: return "???????";
case 2: return "????????";
case 3: return "?????";
case 4: return "????";
case 5: return "?????";
case 6: return "??????";
case 7: return "???";
case 8: return "????";
case 9: return "???";
case 10: return "??";
case 11: return "????";
case 12: return "?????";
default: return "";
}
}
//How to use it:
DateTime date = DateTime.Now;
string mname = date.GetMonthName();
Run Code Online (Sandbox Code Playgroud)
Dar*_*rov 11
试试这样:
public static string PersianDateString(DateTime d)
{
CultureInfo faIR = new CultureInfo("fa-IR");
return d.ToString("yyyy/MM/dd", faIR);
}
Run Code Online (Sandbox Code Playgroud)
如果您将格式更改为例如"yyyy MMM ddd"
您将获得2011 ????? ?????
.
归档时间: |
|
查看次数: |
8416 次 |
最近记录: |