生年月日チェックを行いたいのですが

ちょうどいい共通関数などはありませんか??
年に関しては自分で範囲指定できるような
共通関数があればすごい助かります。
宜しくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/12/19 19:06:25
  • 終了:--

回答(3件)

id:andi No.1

andi回答回数448ベストアンサー獲得回数02005/12/19 19:11:14

ポイント20pt

追加情報を下さい(いわしが使えないので回答で失礼します)。

1.プログラム言語は何言語を想定されていますか?

2.「生年月日チェック」とは生年月日をどのような条件でチェックするものでしょうか?

 (日付として妥当かどうか(日付チェック)を調べるのでしょうか?)

id:tech1

PHP4.3.11です。

日付はチェックできているので年度の範囲を

設定できるような風に以下のソースを修正してもらえませんか??

function isCalender( $CheckYear, $CheckMonth, $CheckDay ) {

$LastDay= ””;// 末日格納

$EndDay= array();// 毎月最終日格納

// 年月が未入力である場合は処理しない

if( $CheckYear == ”” || $CheckMonth == ”” ) return true;

// 数値チェック、及び範囲チェックを行う

if( ! ereg( ”^[12][0-9][0-9][0-9]$”, $CheckYear ) ) {

return false;

} else if( ! ereg( ”^0?[1-9]$|^1[0-2]$”, $CheckMonth ) ) {

return false;

} elseif( $CheckDay != ”” &&

ereg( ”^0?[1-9]$|^[12][0-9]$|^3[01]$”, $CheckDay ) == false ) {

return false;

}

if( $CheckDay != ”” ) {

// $CheckYear 年 $CheckMonth 月の末日を求める

$EndDay = array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );

$LastDay = $EndDay[$CheckMonth - 1];

$LastDay += ( $CheckMonth == 2 and $CheckYear % 4 == 0 and ( $CheckYear % 400 == 0 or $CheckYear % 100 != 0 ) );

// 末日チェックを行う

if( $CheckDay > $LastDay ) return false;

}

return true;

}

;?>

2005/12/19 19:23:13
id:andi No.2

andi回答回数448ベストアンサー獲得回数02005/12/20 09:36:46

ポイント20pt

http://www.res-system.com/weblog/item/438

PHP:変数のスコープ:グローバル変数を使う際の注意点:global

PHPはほとんど使用しないのですが、一応。


> 年度の範囲を設定


「どのような」設定の仕方を望まれているのかが分かりませんが、

1.グローバル変数

2.関数の引数として渡す

のどちらかが妥当だと思われます。


1.グローバル変数

<?php

$MaxYear = 2005

$MinYear = 1900

function isCalender(...){

global $MaxYear,$MinYear;

.

.

.

if($CheckYear < $MinYear || $MaxYear < $CheckYear) return false;

}

?>


2.関数の引数として渡す

<?php

$MaxYear = 2005

$MinYear = 1900

// 関数の呼び出し

// isCalender(...,$MaxYear,$MinYear);

function isCalender(...,$MaxYear,$MinYear){

.

.

.

if($CheckYear < $MinYear || $MaxYear < $CheckYear) return false;

}

?>


ところで、ご質問が曖昧なので回答が付かないのかな・・・と思います。

ご質問が曖昧だとポイントも無駄にしちゃいますので、ご登録前に一度質問内容を推敲されてみて下さい。


# 余計な指摘申し訳ありません。

id:tech1

ありがとうございます。

2005/12/22 16:26:51
id:teru2g No.3

teru2g回答回数21ベストアンサー獲得回数02005/12/22 00:01:53

ポイント20pt

日付の妥当性をチェックするのであれば、自分で正規表現などを使うよりはPHPのcheckdate関数を使うほうが楽です。

$isValid = checkdate($month, $day, $year);

日付が妥当であればTRUEが、ありえない日付の場合はFALSEが返ります。

この結果を見てTRUEだった場合に、設定した範囲の年のチェックをすればよろしいのではないかと

id:tech1

ありがとうございます。

2005/12/22 16:27:40

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません