指定された日付の週数を正確に計算します
特定の日付の正しい週番号を決定することは、特に週末が 2 年にまたがる場合には、難しい作業になることがあります。これは、2012 年 12 月 31 日の週番号を見つけようとすると明らかです。多くの標準メソッドは、期待される 1 ではなく、誤った値 53 を返します。
ISO8601 の週番号と .Net の週番号の違いです。 .Net では数週間を数年にまたがることができますが、ISO 標準では許可されていません。
ISO 8601 週番号
ISO 8601 によれば、年の最初の週は、年の最初の木曜日が含まれる週です。これは、2012 年 12 月 31 日が 2013 年の第 1 週に当たることを意味します。
さまざまなプログラミング言語でのソリューション
- C#
// 假设一周从星期一开始 // 第 1 周是当年包含星期四的第一周 public static int GetIso8601WeekOfYear(DateTime time) { // 通过移动到同一周的星期四、星期五或星期六来处理星期一、星期二或星期三 DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time); if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday) { time = time.AddDays(3 - (int)day); } // 现在,我们知道这一周的星期四在这一周内,我们可以计算周数 return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); }
- Python
import datetime def get_iso_week_number(date): """ 获取日期的 ISO 8601 周数。 :param date: 要获取周数的日期。 :type date: datetime.datetime :return: ISO 8601 周数。 :rtype: int """ year, week, _ = date.isocalendar() return week
- JavaScript
function getIsoWeekNumber(date) { // 通过移动到同一周的星期四、星期五或星期六来处理星期一、星期二或星期三 var day = date.getDay(); if (day < 4) { date.setDate(date.getDate() - (date.getDay() - 1)); // Move to Monday } // 现在,我们知道这一周的星期四在这一周内,我们可以计算周数 var firstDayOfYear = new Date(date.getFullYear(), 0, 1); var days = Math.floor((date - firstDayOfYear) / (24 * 60 * 60 * 1000)); return Math.ceil((days + firstDayOfYear.getDay() + 1) / 7); }
ISO 8601 標準に準拠することで、これらのソリューションは 2012 年 12 月 31 日の第 1 週を正確に返し、特定の日付の正確な週番号を保証します。
以上が特定の日付の週数を正しく決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

GULCは、最小限のオーバーヘッド、積極的なインライン、およびコンパイラの最適化を優先する高性能Cライブラリです。 高周波取引や組み込みシステムなどのパフォーマンスクリティカルなアプリケーションに最適な設計では、シンプルさ、モジュールが強調されています

この記事では、c関数のリターンタイプ、基本(int、float、charなど)、派生(配列、ポインター、構造体)、およびvoid型を含む詳細を示します。 コンパイラは、関数宣言とreturnステートメントを介して返品タイプを決定し、強制します

この記事では、C関数宣言と定義、引数の合格(価値とポインターによる)、返品値、およびメモリリークやタイプの不一致などの一般的な落とし穴について説明します。 モジュール性とProviの宣言の重要性を強調しています

この記事では、文字列ケース変換のC関数について詳しく説明しています。 ctype.hのtoupper()とtolower()を使用し、文字列を介して繰り返し、ヌルターミネーターを処理することを説明しています。 ctype.hを忘れたり、文字列リテラルを変更するなどの一般的な落とし穴は

この記事では、C関数の戻り値ストレージを調べます。 通常、リターン値は通常、速度のためにレジスタに保存されます。値が大きいと、ポインターをメモリ(スタックまたはヒープ)に使用し、寿命に影響を与え、手動のメモリ管理が必要になります。直接acc

この記事では、C標準テンプレートライブラリ(STL)について説明し、そのコアコンポーネント(コンテナ、イテレーター、アルゴリズム、およびファンクター)に焦点を当てています。 これらが一般的なプログラミングを有効にし、コード効率を向上させ、読みやすさを改善する方法を詳述しています。

この記事では、形容詞の「個別」の多面的な使用法を分析し、その文法機能、一般的なフレーズ(例:「はっきりと異なる」とは異なる」、およびフォーマルと非公式の微妙なアプリケーションを調査します。

この記事では、cの効率的なSTLアルゴリズムの使用について詳しく説明しています。 データ構造の選択(ベクトル対リスト)、アルゴリズムの複雑さ分析(STD :: STD :: STD :: PARTIAL_SORTなど)、イテレーターの使用、および並列実行を強調しています。 のような一般的な落とし穴


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

Dreamweaver Mac版
ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
