PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
2446 98/07/23 14:23:36 RE:RE:PB5.0.02: 日付の計算について By aki
2438 98/07/23 09:35:13 RE:PB5.0.02: 日付の計算について By あすかちゃんの父
2418 98/07/21 10:18:44 PB5.0.02: 日付の計算について By HIDENORI

カテゴリ:旧電子会議室
日付:1998年07月23日 14:23 発信者:aki
題名:RE:RE:PB5.0.02: 日付の計算について

HIDENORIさん、こんにちは。

>>たとえば画面に日付Aと日付Bと配置してA?Bまで何ヶ月あるか調べるとき
>>どのようにしていますか?

このロジックを組むためには、

>98/2/1と98/3/1の日数の差は28日で、98/3/1と98/4/1の日数の差は
>31日ですよね。これはいずれも1ヶ月となるのでしょうか?
>また98/3/1と98/4/29の間は1ヶ月とすればいいのでしょうか?

あすかちゃんの父さんのおっしゃるとおり、「一ケ月」をどのように捉えるかで変わると思いますが、私の中での考え
は、
?FROM日付の「年月」 <  TO日付の「年月」
?FROM日付の「日」  <= TO日付の「日」?1
この二つの条件をクリアしたものは、ひとつきカウントアップ。

例)1998.07.21?1998.08.31 は一ケ月
  1998.07.21?1998.09.20 は二ケ月

また、同年同月でも1日?月末であればカウントアップ

例)1998.07.01?1998.07.31 は一ケ月

ただし、問題になるのは月末時期の比較です。
月末には、4パターンありますよね。
(28、29、30、31)

次のような場合は上記??の条件は当てはまらなくなります。
例)1998.02.28?1998.03.30 は一ケ月に満たない
  1998.01.31?1998.02.28 は一ケ月

これらの条件、月末、閏年などを考慮した期間計算としてたどり着いた方法は、
計算を開始する前にFROMとTOの両日付に「一日」加算する方法です。

「一日」加算することで月末日付のものは、月に関係なくすべて「○年○月1日」に
なります。
計算後の各日付を「年、月、日」に分解し、計算すればいいわけです。
#ただし、日の比較結果で月数を減算することになります。

この関数は、PB4の頃に作ったものですが今でも使ってます。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows95
DBMS Sybase SQL Anywhere Client
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS Sybase SQL Anywhere Standalone
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.