我使用这些代码将格里高利历转换为儒略历,没有问题。
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;
}
答案 0 :(得分: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)