【问题标题】:converting calendars转换日历
【发布时间】:2012-08-09 22:41:27
【问题描述】:

我使用这些代码将公历转换为儒略历,没有问题。

private void button1_Click(object sender, EventArgs e)
    {
        JulianCalendar juli = new JulianCalendar();
        DateTime dt = Convert.ToDateTime(textBox1.Text);
        int day = juli.GetDayOfMonth(dt);
        int month = juli.GetMonth(dt);
        int year = juli.GetYear(dt);
        string s = string.Format("{0}/{1}/{2}", month, day, year);
        textBox2.Text = s;
    }

它给了我儒略日期时间,但是当我想再次将它转换为具有该日期时间的公历时,它将不起作用。我使用以下代码将儒略历转换为公历。有什么问题?

 private void button2_Click(object sender, EventArgs e)
    {
        string juli = textBox3.Text;
        string[] parts = juli.Split('/', '-');
        JulianCalendar jul = new JulianCalendar();
        DateTime dta = jul.ToDateTime(Convert.ToInt32(parts[0]), Convert.ToInt32(parts[1]), Convert.ToInt32(parts[2]), 0, 0, 0, 0);
        string sta = dta.ToShortDateString();
        textBox4.Text = sta;
    }

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    问题出在参数的顺序上。应该是(在 button2_Click 事件中)

    DateTime dta = juli2.ToDateTime(Convert.ToInt32(parts[2]), Convert.ToInt32(parts[0]), Convert.ToInt32(parts[1]), 0, 0, 0, 0);
    

    因为 ToDateTime 方法的签名如下:

    public virtual System.DateTime ToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond)
    

    【讨论】:

    • 谢谢。有效。我应该为其他日历还是只为儒略历这样做?
    • @aliboy38 只需检查方法的签名并将年月日放在正确的位置
    • 月为 2,日为 0,年为 1?
    • @aliboy38 看看...在你的第二个函数中,你解析以下字符串 - string.Format("{0}/{1}/{2}", month, day, year);所以 0 - 月,1 - 天,2 - 年。
    猜你喜欢
    • 2016-02-11
    • 2012-02-20
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    相关资源
    最近更新 更多