根据儒略历计算月份
calculation of month as per Julian Calendar
我是 QT C++ 的初学者,我正在尝试根据数组列表中提到的值在 label_j
上打印儒略日。我做不到。请你能看到并更正它。非常感谢。
当前月份是从 UTC 获取的,
如果月份等于 jan 则打印 0,
月等于然后打印 31,
month 等于 March 然后打印 59 等等,直到它到达 December。
void MainWindow::getJulianDay()
{
int month_arr[]={0,31,59,90,120,151,181,212,243,273,304,334};
QString January, February, March, April, May, June, July, August, September, October, November, December;
QDateTime local(QDateTime::currentDateTimeUtc());
QDateTime UTC(local.toUTC());
QString month=UTC.toString("MMMM");
switch (month)
{
case January:
month=month_arr[0];
break;
case February:
month=month_arr[1];
break;
case March:
month=month_arr[2];
break;
case April:
month=month_arr[3];
break;
case May:
month=month_arr[4];
break;
case June:
month=month_arr[5];
break;
case July:
month=month_arr[6];
break;
case August:
month=month_arr[7];
break;
case September:
month=month_arr[8];
break;
case October:
month=month_arr[9];
break;
case November:
month=month_arr[10];
break;
case December:
month=month_arr[11];
break;
default: month=invalid;
break;
ui->label_j->setText(month);
}
我看到两个主要错误:
首先,你的case
语句条件为空。你应该这样做:
switch(variable) {
case condition1:
...
break;
case condition2:
...
break;
...
default:
...
break;
}
因此,您的代码变为:
switch (month);
{
case 1:
month="January";
answer=month_arr[0];
break;
case 2:
month="February";
answer=month_arr[1];
break;
...
default:
month="invalid";
break;
}
第二个主要问题是 ui->label_j->setText(answer);
应该在 switch
循环之外。目前,这条语句永远不会被执行。
编辑:正如 m7913d 所注意到的,您有很多类型错误。检查变量的类型 !
我是 QT C++ 的初学者,我正在尝试根据数组列表中提到的值在 label_j
上打印儒略日。我做不到。请你能看到并更正它。非常感谢。
当前月份是从 UTC 获取的, 如果月份等于 jan 则打印 0, 月等于然后打印 31, month 等于 March 然后打印 59 等等,直到它到达 December。
void MainWindow::getJulianDay()
{
int month_arr[]={0,31,59,90,120,151,181,212,243,273,304,334};
QString January, February, March, April, May, June, July, August, September, October, November, December;
QDateTime local(QDateTime::currentDateTimeUtc());
QDateTime UTC(local.toUTC());
QString month=UTC.toString("MMMM");
switch (month)
{
case January:
month=month_arr[0];
break;
case February:
month=month_arr[1];
break;
case March:
month=month_arr[2];
break;
case April:
month=month_arr[3];
break;
case May:
month=month_arr[4];
break;
case June:
month=month_arr[5];
break;
case July:
month=month_arr[6];
break;
case August:
month=month_arr[7];
break;
case September:
month=month_arr[8];
break;
case October:
month=month_arr[9];
break;
case November:
month=month_arr[10];
break;
case December:
month=month_arr[11];
break;
default: month=invalid;
break;
ui->label_j->setText(month);
}
我看到两个主要错误:
首先,你的case
语句条件为空。你应该这样做:
switch(variable) {
case condition1:
...
break;
case condition2:
...
break;
...
default:
...
break;
}
因此,您的代码变为:
switch (month);
{
case 1:
month="January";
answer=month_arr[0];
break;
case 2:
month="February";
answer=month_arr[1];
break;
...
default:
month="invalid";
break;
}
第二个主要问题是 ui->label_j->setText(answer);
应该在 switch
循环之外。目前,这条语句永远不会被执行。
编辑:正如 m7913d 所注意到的,您有很多类型错误。检查变量的类型 !