2016-04-03 16 views
2

私は、ほとんどのプログラミング言語に関数/クラスがあることを知っていますが、計算を知りたいと思います。unix時間に基づいて曜日を計算する方法

So:どのようにして秒単位で日時(例えば、日曜日は0、月曜日は1など)になりますか?

ありがとうございます。ところで、これはStack Overflowに関する私の最初の投稿です。

+0

https://en.wikipedia.org/wiki/Unix_time –

答えて

6

他の日付/時刻関数がどれほど複雑であるか(たとえばZeller's congruence)と比べて、あなたが聞いた問題はかなり簡単です。

  1. UNIX時間は、1970年1月1日から00:00(深夜)までの経過秒数で定義されます。

  2. カレンダーを検索して、1970-01-01が木曜日だったことを確認できます。 1日に24 * 60 * 60 = 86400秒があります。

  3. は、そのため86400 172799への木曜日は、259199から172800等、土曜日であるこれらは86400秒のブロックががあなたのUnixである0

  4. と仮定Tで整列している、金曜日されている0 86399に値タイムスタンプ。次に床(T/86400)は、1970-01-01の後の日数を示します。 0 =木曜日1月1日; 1 =金曜日1月2日; 2 =土曜日1月3日;

  5. 4を加えて7を法とする。0→4; 1→5; 2→6; 3→0; 4→1; 5→2; 6→3; 7→4; 8→5; 9→6; 10→0;これがあなたの最終的な答えです。要約すると

  6. :曜日=(床(T/86400)+ 4)のmod 7

  7. は(これはUTCで曜日を望んでいることを前提としてしたい場合。別のタイムゾーンのためにそれを計算するために、あなたが最初のTに時間と分のいくつかの加算または減算を実行する必要があります。)

+0

非常にありがとうたくさん – Jermano

関連する問題