Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengira Bilangan Minggu Tarikh Menggunakan Piawaian ISO 8601?
Mengira Nombor Minggu dari Tarikh
Masalah:
Diberi tarikh, tentukan nombor minggu untuk tarikh tersebut dalam tahun tersebut. Sebagai contoh, pada tahun 2008, 1 Januari hingga 6 Januari adalah dalam minggu 1 dan 7 hingga 13 Januari adalah dalam minggu 2. Jika tarikh 10 Januari 2008, nombor minggu yang sepadan hendaklah 2.
Standard ISO 8601:
Perlu diingat bahawa takrifan Minggu "ke-nth" dalam setahun boleh berbeza-beza. Piawaian ISO 8601 mentakrifkan garis panduan khusus untuk penomboran minggu:
Pelaksanaan:
Sampel kod berikut dalam C menunjukkan cara mengira nombor minggu mengikut piawaian ISO 8601:
#include <chrono> #include <iostream> using namespace std; class Date { private: int year; int month; int day; public: Date(int year, int month, int day) : year(year), month(month), day(day) {} int getWeekNumber() { // Convert the date to a system_time object time_t t = time(0); tm* timeinfo = localtime(&t); // Create a system_time object for the first day of the year tm first_of_year; first_of_year.tm_year = year - 1900; first_of_year.tm_mon = 0; first_of_year.tm_mday = 1; time_t first_of_year_time = mktime(&first_of_year); // Calculate the number of days between the first day of the year and the given date long days_since_first_of_year = difftime(t, first_of_year_time) / (60 * 60 * 24); // Calculate the week number based on the number of days since the first day of the year int week_number = 1 + (days_since_first_of_year / 7); // Adjust the week number for possible week 53 int days_in_year = days_since_first_of_year + 1; int days_in_last_week = days_in_year % 7; if (days_in_last_week >= 5 && (week_number == 53 || (week_number == 52 && days_in_year >= 371))) { week_number = 53; } return week_number; } }; int main() { Date date(2008, 1, 10); cout << "Week number for January 10th 2008 is: " << date.getWeekNumber() << endl; return 0; }
Output:
Week number for January 10th 2008 is: 2
Atas ialah kandungan terperinci Bagaimana untuk Mengira Bilangan Minggu Tarikh Menggunakan Piawaian ISO 8601?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!