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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.