ホームページ  >  記事  >  バックエンド開発  >  Cで指定された日付の週番号を計算するにはどうすればよいですか?

Cで指定された日付の週番号を計算するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-26 10:50:10408ブラウズ

How to Calculate the Week Number of a  Given Date in C  ?

指定された日付の週番号を計算する方法

日付を指定すると、それぞれの年の内のその日付の週番号を決定できます。次の手順で達成します:

  1. 最初の最初の日を特定します。 year of the year: 指定された年の 1 月 1 日に最も近い月曜日を決定します。これは、1 月 1 日の平日 (日曜日: 1、月曜日: 0、火曜日: -1、水曜日: -2、木曜日: -3、金曜日: 3、土曜日: 2) に基づいて日数を加算または減算することで数学的に求めることができます。
  2. 指定された日付と週の最初の日 1 の間の完全な週数を計算します 1: 指定された日付から週 1 の最初の日を減算します経過日数を取得します。これを 7 で割ると、完了した週数が得られます。
  3. 余りを計算します: 経過日数を 7 で割って余りを計算して、残りの日数を求めます。これは、現在の週の日数を表します。
  4. 週番号の割り当て: 週全体と残りの日数を組み合わせると、週番号が得られます。

たとえば、2008 年 1 月 10 日の場合:

  1. 第 1 週の最初の日は 1 月です2008 年 7 日は月曜日です。
  2. 経過日数は 10 - 7 = 3 です。
  3. 週全体の数は 3 / 7 = 0 です。
  4. 残りは 3 日です。
  5. したがって、週番号は 2 になります (第 1 週から開始)。

C では、このアルゴリズムは次のように実装できます。

#include <iostream>
#include <ctime>

using namespace std;

int main() {
  // Get the user's input date
  tm inputDate;
  cout << "Enter the date (YYYY-MM-DD): ";
  cin >> get_time(&inputDate, "%Y-%m-%d");

  // Calculate the first day of week 1
  tm firstDayOfWeek1;
  time_t firstDaySeconds = mktime(&inputDate);
  
  // Calculate the number of elapsed days
  long elapsedDays = difftime(firstDaySeconds, mktime(&firstDayOfWeek1));

  // Calculate the number of whole weeks
  int wholeWeeks = elapsedDays / (7 * 24 * 60 * 60);

  // Calculate the remainder
  int remainder = elapsedDays % (7 * 24 * 60 * 60);

  // Calculate the week number
  int weekNumber = wholeWeeks + (remainder > 0);

  // Print the week number
  cout << "The week number is: " << weekNumber << endl;

  return 0;
}

以上がCで指定された日付の週番号を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。