2012-01-05 17 views
1

datetimeライブラリが利用できないデバイス用のコードを開発しています(注:浮動小数点も利用できません)ので、私はmyslefの計算をしなければなりません。タイムスタンプから曜日を計算するには? (DST)

私のタイムスタンプは2000年1月1日からの秒数(UTCで)です。デバイスの構成では 私が持っている:時間数として

  • 現在のタイムゾーンを+/- UTC
  • から
  • 私が知っている必要があり

を追加する時間数などDST:

  • 現在の曜日
  • 現在時間

現在の時間を計算することは非常に簡単です:曜日を計算

timestamp % 86400 # seconds from midnight 

(1-月曜日、7-日曜日):

dayofweek = (timestamp - 86400) % (86400*7)/86400 
if dayofweek = 0: 
    dayofweek = 7 

ノート:

  • 86400 =秒1日で

1.タイムゾーン時間を追加する 2. DST時間を追加する

DST時間(ヨーロッパサマータイムのみ)を追加するかどうかを計算する方法は問題ですか?私はこれを効率的に行う必要があります。コンピューティングパワーが非常に限られており、できるだけ早くこれを行う必要があります:-)

+0

@selbie閏年は曜日と何が関係していますか?うるう年には、週に1日ではなく、1日に1日を追加します。私は何年にも分けず、私は日/週で分けます。 –

+0

私の悪い。うるう年は計算年/月/日の問題です。しかし、あなたは一週間のうちに正しいですが、それは無関係です。 – selbie

答えて

0

DSTが適用されているかどうかを判断するには、曜日と月も知る必要があります。ヨーロッパでは、この変更は先週末の3月/先週の10月に行われます。 DSTなしのタイムゾーンオフセットを適用することを提案し、時間、曜日、曜日、月を取得する計算を行い、DSTにいる場合は、これらの値のいずれかまたはすべてを調整する必要があります(元の値それは調整が必要な時間に過ぎないかもしれません)。

最初にタイムゾーンオフセットを実行すると、DSTを使用しないでローカル時刻/曜日値が正しく取得されます。その後、DST調整は簡単です。

関連する問題