如何在压延工具中从公历转换为回历 [英] How do i convert from Gregorian to Hijri in calender tools

查看:85
本文介绍了如何在压延工具中从公历转换为回历的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

using System.Globalization;

    protected void Page_Load(object sender, EventArgs e)
    {
        HijriCalendar hijri = new HijriCalendar();
        CultureInfo culture = new CultureInfo("ar-SA");
        culture.DateTimeFormat.Calendar = hijri;
        this.Culture = culture.ToString();
       
    }

推荐答案


检查此解决方案
首先使用此类
探索课程,您会发现需要从hijri转换为Gregorian,反之亦然
Hi ,
Check this Solution
First use this class
Explore the class you will find what you need convert from hijri to Gregorian and vice versa
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Globalization;
using System.Threading;
/// <summary>
/// Summary description for ConvertDate
/// </summary>
public class ConvertDate
{
    public ConvertDate()
    {
        //
        // TODO: Add constructor logic here
        //
    }
    private HttpContext cur =HttpContext.Current;

    private const int startGreg = 1900;
    private const int endGreg = 2100;
    private string[] allFormats ={"yyyy/MM/dd","yyyy/M/d",
            "dd/MM/yyyy","d/M/yyyy",
            "dd/M/yyyy","d/MM/yyyy","yyyy-MM-dd",
            "yyyy-M-d","dd-MM-yyyy","d-M-yyyy",
            "dd-M-yyyy","d-MM-yyyy","yyyy MM dd",
            "yyyy M d","dd MM yyyy","d M yyyy",
            "dd M yyyy","d MM yyyy"};
    private CultureInfo arCul =new CultureInfo("ar-SA");
    private CultureInfo enCul=new CultureInfo("en-US");
    private HijriCalendar h = new HijriCalendar();
    private GregorianCalendar g = new GregorianCalendar(GregorianCalendarTypes.USEnglish);


    public bool IsHijri(string hijri)
    {
        if (hijri.Length <= 0)
        {

            cur.Trace.Warn("IsHijri Error: Date String is Empty");
            return false;
        }
        try
        {
            DateTime tempDate = DateTime.ParseExact(hijri, allFormats,
                 arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces);
            if (tempDate.Year >= startGreg && tempDate.Year <= endGreg)
                return true;
            else
                return false;
        }
        catch (Exception ex)
        {
            cur.Trace.Warn("IsHijri Error :" + hijri.ToString() + "\n" +
                              ex.Message);
            return false;
        }

    }
    /// <summary>

    /// Check if string is Gregorian date and then return true

    /// </summary>

    /// <PARAM name="greg"></PARAM>

    /// <returns></returns>

    public bool IsGreg(string greg)
    {
        if (greg.Length <= 0)
        {

            cur.Trace.Warn("IsGreg :Date String is Empty");
            return false;
        }
        try
        {
            DateTime tempDate = DateTime.ParseExact(greg, allFormats,
                enCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces);
            if (tempDate.Year >= startGreg && tempDate.Year <= endGreg)
                return true;
            else
                return false;
        }
        catch (Exception ex)
        {
            cur.Trace.Warn("IsGreg Error :" + greg.ToString() + "\n" + ex.Message);
            return false;
        }

    }

    /// <summary>

    /// Return Formatted Hijri date string

    /// </summary>

    /// <PARAM name="date"></PARAM>

    /// <PARAM name="format"></PARAM>

    /// <returns></returns>

    public string FormatHijri(string date, string format)
    {
        if (date.Length <= 0)
        {

            cur.Trace.Warn("Format :Date String is Empty");
            return "";
        }
        try
        {
            DateTime tempDate = DateTime.ParseExact(date,
               allFormats, arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces);
            return tempDate.ToString(format, arCul.DateTimeFormat);

        }
        catch (Exception ex)
        {
            cur.Trace.Warn("Date :\n" + ex.Message);
            return "";
        }

    }
    /// <summary>

    /// Returned Formatted Gregorian date string

    /// </summary>

    /// <PARAM name="date"></PARAM>

    /// <PARAM name="format"></PARAM>

    /// <returns></returns>

    public string FormatGreg(string date, string format)
    {
        if (date.Length <= 0)
        {

            cur.Trace.Warn("Format :Date String is Empty");
            return "";
        }
        try
        {
            DateTime tempDate = DateTime.ParseExact(date, allFormats,
                enCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces);
            return tempDate.ToString(format, enCul.DateTimeFormat);

        }
        catch (Exception ex)
        {
            cur.Trace.Warn("Date :\n" + ex.Message);
            return "";
        }

    }
    /// <summary>

    /// Return Today Gregorian date and return it in yyyy/MM/dd format

    /// </summary>

    /// <returns></returns>

    public string GDateNow()
    {
        try
        {
            return DateTime.Now.ToString("yyyy/MM/dd", enCul.DateTimeFormat);
        }
        catch (Exception ex)
        {
            cur.Trace.Warn("GDateNow :\n" + ex.Message);
            return "";
        }
    }
    /// <summary>

    /// Return formatted today Gregorian date based on your format

    /// </summary>

    /// <PARAM name="format"></PARAM>

    /// <returns></returns>

    public string GDateNow(string format)
    {
        try
        {
            return DateTime.Now.ToString(format, enCul.DateTimeFormat);
        }
        catch (Exception ex)
        {
            cur.Trace.Warn("GDateNow :\n" + ex.Message);
            return "";
        }
    }

    /// <summary>

    /// Return Today Hijri date and return it in yyyy/MM/dd format

    /// </summary>

    /// <returns></returns>

    public string HDateNow()
    {
        try
        {
            return DateTime.Now.ToString("yyyy/MM/dd", arCul.DateTimeFormat);
        }
        catch (Exception ex)
        {
            cur.Trace.Warn("HDateNow :\n" + ex.Message);
            return "";
        }
    }
    /// <summary>

    /// Return formatted today hijri date based on your format

    /// </summary>

    /// <PARAM name="format"></PARAM>

    /// <returns></returns>


    public string HDateNow(string format)
    {
        try
        {
            return DateTime.Now.ToString(format, arCul.DateTimeFormat);
        }
        catch (Exception ex)
        {
            cur.Trace.Warn("HDateNow :\n" + ex.Message);
            return "";
        }

    }

    /// <summary>

    /// Convert Hijri Date to it's equivalent Gregorian Date

    /// </summary>

    /// <PARAM name="hijri"></PARAM>

    /// <returns></returns>

    public string HijriToGreg(string hijri)
    {

        if (hijri.Length <= 0)
        {

            cur.Trace.Warn("HijriToGreg :Date String is Empty");
            return "";
        }
        try
        {
            DateTime tempDate = DateTime.ParseExact(hijri, allFormats,
               arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces);
            return tempDate.ToString("dd/MM/yyyy", enCul.DateTimeFormat);
        }
        catch (Exception ex)
        {
            cur.Trace.Warn("HijriToGreg :" + hijri.ToString() + "\n" + ex.Message);
            return "";
        }
    }
    /// <summary>

    /// Convert Hijri Date to it's equivalent Gregorian Date

    /// and return it in specified format

    /// </summary>

    /// <PARAM name="hijri"></PARAM>

    /// <PARAM name="format"></PARAM>

    /// <returns></returns>

    public string HijriToGreg(string hijri, string format)
    {

        if (hijri.Length <= 0)
        {

            cur.Trace.Warn("HijriToGreg :Date String is Empty");
            return "";
        }
        try
        {
            DateTime tempDate = DateTime.ParseExact(hijri,
               allFormats, arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces);
            return tempDate.ToString(format, enCul.DateTimeFormat);

        }
        catch (Exception ex)
        {
            cur.Trace.Warn("HijriToGreg :" + hijri.ToString() + "\n" + ex.Message);
            return "";
        }
    }
    /// <summary>

    /// Convert Gregoian Date to it's equivalent Hijir Date

    /// </summary>

    /// <PARAM name="greg"></PARAM>

    /// <returns></returns>

    public string GregToHijri(string greg)
    {

        if (greg.Length <= 0)
        {

            cur.Trace.Warn("GregToHijri :Date String is Empty");
            return "";
        }
        try
        {
            DateTime tempDate = DateTime.ParseExact(greg, allFormats,
                enCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces);
            return tempDate.ToString("yyyy/MM/dd", arCul.DateTimeFormat);

        }
        catch (Exception ex)
        {
            cur.Trace.Warn("GregToHijri :" + greg.ToString() + "\n" + ex.Message);
            return "";
        }
    }
    /// <summary>

    /// Convert Hijri Date to it's equivalent Gregorian Date and

    /// return it in specified format

    /// </summary>

    /// <PARAM name="greg"></PARAM>

    /// <PARAM name="format"></PARAM>

    /// <returns></returns>

    public string GregToHijri(string greg, string format)
    {

        if (greg.Length <= 0)
        {

            cur.Trace.Warn("GregToHijri :Date String is Empty");
            return "";
        }
        try
        {

            DateTime tempDate = DateTime.ParseExact(greg, allFormats,
                enCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces);
            return tempDate.ToString(format, arCul.DateTimeFormat);

        }
        catch (Exception ex)
        {
            cur.Trace.Warn("GregToHijri :" + greg.ToString() + "\n" + ex.Message);
            return "";
        }
    }

    /// <summary>

    /// Return Gregrian Date Time as digit stamp

    /// </summary>

    /// <returns></returns>

    public string GTimeStamp()
    {
        return GDateNow("yyyyMMddHHmmss");
    }
    /// <summary>

    /// Return Hijri Date Time as digit stamp

    /// </summary>

    /// <returns></returns>

    public string HTimeStamp()
    {
        return HDateNow("yyyyMMddHHmmss");
    }


    /// <summary>

    /// Compare two instaces of string date

    /// and return indication of thier values

    /// </summary>

    /// <PARAM name="d1"></PARAM>

    /// <PARAM name="d2"></PARAM>

    /// <returns>positive d1 is greater than d2,

    /// negative d1 is smaller than d2, 0 both are equal</returns>

    public int Compare(string d1, string d2)
    {
        try
        {
            DateTime date1 = DateTime.ParseExact(d1, allFormats,
                arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces);
            DateTime date2 = DateTime.ParseExact(d2, allFormats,
                arCul.DateTimeFormat, DateTimeStyles.AllowWhiteSpaces);
            return DateTime.Compare(date1, date2);
        }
        catch (Exception ex)
        {
            cur.Trace.Warn("Compare :" + "\n" + ex.Message);
            return -1;
        }

    }

}


Default.aspx


Default.aspx

<div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:Button ID="Button1"  runat="server" Text="Button" onclick="Button1_Click" />
    </div>


protected void Button1_Click(object sender, EventArgs e)
    {
             ConvertDate Cd = new ConvertDate();
        if (Cd.IsGreg(TextBox1.Text))
        {
           string DateHijri = Cd.GregToHijri(TextBox1.Text);
           Response.Write("<script>alert('" + DateHijri + "')</script>");

        }
    }



最好的问候
米特瓦里(M.Mitwalli)



Best Regards
M.Mitwalli


这篇关于如何在压延工具中从公历转换为回历的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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