如何打印日期时间,在C#波斯格式 [英] How to print DateTime in Persian format in C#

查看:223
本文介绍了如何打印日期时间,在C#波斯格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

什么是打印C#的DateTime波斯最简单的方法?
我目前使用:

 的静态公共字符串PersianDateString(DateTime的D)
{
CultureInfo的公平=新的CultureInfo(FA-IR);
faIR.DateTimeFormat.Calendar =新PersianCalendar();
返回d.ToString(YYYY / MM / DD,公平);
}



会抛出异常。




不为特定的文化



解决方案
首先,你一定要注意,你不能把一个贾拉利日期的DateTime对象,你会得到一个例外,如1392年2月31日的日期。



所以你必须处理您的贾拉利在一个字符串或自定义DateTime类型的日期。



我建议你保持你的日期,在任何时候一个公历日期,而当你需要将其转换为证明这一点。



这是一个扩展方法从DateTime对象波斯日期。

 公共静态字符串GetPersianDate(这个日期为准​​)
{
PersianCalendar JC =新PersianCalendar();
返回的String.Format({0:0000} / {1:00} / {} 2:00,jc.GetYear(日期),jc.GetMonth(日期),jc.GetDayOfMonth(日期)) ;
}
//如何使用它:
的DateTime D =新日期时间(2014,05,21);
字符串s = d.GetPersianDate(); // 1393年/ 2月31日



然后当你在字符串格式的贾拉利日期这里是扩展方法来获得公历日期:

 公共静态的DateTime GetDateTimeFromJalaliString(此字符串jalaliDate)
{
PersianCalendar JC =新PersianCalendar();


{
的String [] =日期jalaliDate.Split('/');
INT年= Convert.ToInt32(日期[0]);
INT月= Convert.ToInt32(日期[1]);
INT天= Convert.ToInt32(日期[2]);

日期时间D = jc.ToDateTime(年,月,日,0,0,0,0,PersianCalendar.PersianEra);

返回D组;
}

{
抛出新FormatException(输入的字符串必须是0000/00/00格式。);
}
}
//如何使用它:
串PDATE =1392年2月31日;
的DateTime dateFromJalali = pdate.GetDateTimeFromJalaliString(); // {2014年5月21日12:00:00 AM}

和现在处理额外的功能



周名称:

 公共静态字符串GetDayOfWeekName(这个日期日期)
{
开关(date.DayOfWeek)
{
情况下DayOfWeek.Saturday:回归شنبه
情况下DayOfWeek.Sunday:回归يکشنبه
情况下DayOfWeek.Monday:回归دوشنبه
情况下DayOfWeek.Tuesday:回归سهشنبه
情况下DayOfWeek.Wednesday:回归چهارشنبه
情况下DayOfWeek.Thursday:回归پنجشنبه
情况下DayOfWeek.Friday:回归جمعه
默认:回归;
}
}
//如何使用它:
日期时间日期= DateTime.Now;
串wname = date.GetDayOfWeekName();



月份名称:

 公共静态字符串GetMonthName(这个日期为准​​)
{
PersianCalendar JC =新PersianCalendar();
串PDATE =的String.Format({0:0000} / {1时} / {2点},jc.GetYear(日期),jc.GetMonth(日期),jc.GetDayOfMonth(日期));

的String []日期= pdate.Split('/');
INT月= Convert.ToInt32(日期[1]);

开关(月)
{
案例1:回归فررودين
案例2:回归ارديبهشت
案例3:回归خرداد
案例4:回归تير
案例5:回归مرداد
案例6:回归شهريور
案例7:回归مهر
案例8:回归آبان
案例9:回归آذر
案例10:回归دي
案例11:回归بهمن
案例12:回归اسفند
默认:回归;
}

}
//如何使用它:
日期时间日期= DateTime.Now;
字符串MNAME = date.GetMonthName();


What is the simplest way to print c# DateTime in Persian? currently I'm using :

static public string PersianDateString(DateTime d)
{
    CultureInfo faIR = new CultureInfo("fa-IR");
    faIR.DateTimeFormat.Calendar = new PersianCalendar();            
    return d.ToString("yyyy/MM/dd", faIR);
}

Which throws an exception

Not a valid calendar for the given culture

解决方案

First you must note that you cannot put a Jalali Date in a DateTime object, you will get an exception in dates like "1392/02/31".

So you must handle your Jalali dates in a string or a custom DateTime type.

I suggest that you keep your date as a Gregorian date at all time, and convert it when you need to show it.

This is an extension method to get Persian Date from a DateTime object.

    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

And then when you have a Jalali date in string format here is the extension method to get the Gregorian date:

    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}

And now to handle extra functions:

Week name:

    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();

Month name:

    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();

这篇关于如何打印日期时间,在C#波斯格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆