根据儒略历计算月份

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 所注意到的,您有很多类型错误。检查变量的类型 !