リプタクのもう覚えられません
Google
Web サイト内
topmemo ▶ 経過年月日電卓ver1.0サンプル

ActionScript

経過年月日電卓ver1.0サンプル

計算開始日と終了日を入力で、経過年月日及び経過日数を計算するサンプル。

JavaScriptを有効にし、最新のFlashPlayerをインストールお願いしますGet Adobe Flash player

フラッシュムービーサンプルをダウンロード(CS3_swf_Zip)
ソースサンプルをダウンロード(CS3_fla_Zip)

【ActionScript3.0 サンプルソースコード】

//経過年月日電卓ver1.0

stop();

//初期表示(開始日)
var now:Date=new Date();//--------今日の日付取得(初期表示用)
var endY:int=now.fullYear;//------終了年
var endM:int=now.month+1;//-------終了月 ※1=1月
var endD:int=now.date;//----------終了日 ※1=1日
var startY:int=now.fullYear;//----開始年
var startM:int=1;//---------------開始月 ※1=1月
var startD:int=1;//---------------開始日 ※1=1日
var numY:int;//-------------------経過年
var numM:int;//-------------------経過月 ※1=1月
var numD:int;//-------------------経過日 ※1=1日

//入力できる文字の設定
tf1.restrict = "0-9";
tf2.restrict = "0-9";
tf3.restrict = "0-9";
tf4.restrict = "0-9";
tf5.restrict = "0-9";
tf6.restrict = "0-9";

//テキスト表示
tf1.text=String(now.fullYear);//---終了年
tf2.text=String(now.month+1);//----終了月
tf3.text=String(now.date);//-------終了日
tf4.text=String(startY);//---------開始年
tf5.text=String(startM);//---------開始月
tf6.text=String(startD);//---------開始日
tf7.text="";//---------------------経過年
tf8.text="";//---------------------経過月
tf9.text="";//---------------------経過日
tf10.text="";//--------------------エラーテキスト
tf11.text="";//--------------------エラーテキスト
tf12.text="";//--------------------日換算

//tabキーの順番設定
tf1.tabIndex = 1;
tf2.tabIndex = 2;
tf3.tabIndex = 3;
tf4.tabIndex = 4;
tf5.tabIndex = 5;
tf6.tabIndex = 6;
bt1.tabIndex = 7;

//ボタンクリックで計算
bt1.addEventListener(MouseEvent.CLICK,f_1);

//エンターキーでも計算できるようにする。
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyon);
function keyon(event:KeyboardEvent):void {
	if (event.keyCode==Keyboard.ENTER) {
		f_1(KeyboardEvent.KEY_DOWN);
	}
}

//計算
function f_1(e):void {

	//テキストリセット
	tf7.text=String("-");//経過年
	tf8.text=String("-");//経過月
	tf9.text=String("-");//経過日
	tf10.text=String("");//エラーテキスト
	tf11.text=String("");//エラーテキスト
	tf12.text=String("");//日換算

	//開始日の取得
	endY = int(tf1.text);//---------終了年
	endM = int(tf2.text);//---------終了月 ※1=1月
	endD = int(tf3.text);//---------終了日 ※1=1日
	startY = int(tf4.text);//-------開始年
	startM = int(tf5.text);//-------開始月 ※1=1月
	startD = int(tf6.text);//-------開始日 ※1=1日

	//末日確認用変数
	var checkDay1:Date=new Date(endY,endM,0,0,0,0,0);//------末日確認用
	var checkDay2:Date=new Date(startY,startM,0,0,0,0,0);//--末日確認用
	var backDay:Date = new Date(endY,endM -1,0,0,0,0,0);//---月繰下げ用

	//1-12月以外なら強制終了
	if (endM == 0 || endM > 12) {
		tf10.text = "※1〜12月";
		return;//強制終了
	}
	if (startM == 0 || startM > 12) {
		tf11.text = "※1〜12月";
		return;//強制終了
	}
	//日が範囲外なら強制終了
	if (endD == 0 || endD > checkDay1.date) {
		tf10.text = "※1〜"+ checkDay1.date + "日";
		return;//強制終了
	}
	if (startD == 0 || startD > checkDay2.date) {
		tf11.text = "※1〜"+ checkDay2.date + "日";
		return;//強制終了
	}

	//経過年月日の再計算
	numY = endY-startY;//経過年
	numM = endM-startM;//経過月 ※1=1月
	numD = endD-startD;//経過日 ※1=1日


	//日がマイナス対応
	if (numD < 0) {
		numD = backDay.date + numD;//ひと月分の日数を貰う
		--numM;
	}
	//月がマイナス対応
	if (numM < 0) {
		numM = 12 + numM;//1年分の月数を貰う
		--numY;
	}
	//とにかくマイナスがあれば強制終了
	if (numY < 0 ||numM < 0||numD < 0) {
		tf10.text = "※終了日(大)";
		tf11.text = "※開始日(小)";
		return;//強制終了
	}
	//テキスト表示
	tf7.text=String(numY);//経過年
	tf8.text=String(numM);//経過月
	tf9.text=String(numD);//経過日
	tf10.text= "";


	//=========================================================ここから日にち換算
	var endTotalD:int=0;
	var startTotalD:int=0;
	var y1D:int = 365;//1年→日
	var y2D:int = 365*2;//2年→日
	var y3D:int = 365*3;//3年→日
	var y4D:int = 365*4+1;//4年→日
	var mDArrS:Array =[31,28,31,30,31,30,31,31,30,31,30,31];//平年12月参考値
	var mDArr4:Array =[31,28+1,31,30,31,30,31,31,30,31,30,31];//閏年12月参考値

	//4年で割り切れる年数を日換算
	endTotalD += Math.floor(endY/4)*y4D;
	startTotalD += Math.floor(startY/4)*y4D;

	//端数年の日換算
	switch (endY%4) {
		case 1 :
			endTotalD += y1D;
			break;
		case 2 :
			endTotalD += y2D;
			break;
		case 3 :
			endTotalD += y3D;
			break;
	}
	switch (startY%4) {
		case 1 :
			startTotalD += y1D;
			break;
		case 2 :
			startTotalD += y2D;
			break;
		case 3 :
			startTotalD += y3D;
			break;
	}
	
	//月→日換算
	for (var i:int=0; i < endM-1; i++) {
		if (endY%4 == 3) {//閏年だったら
			endTotalD += mDArr4[i];
		} else {
			endTotalD += mDArrS[i];
		}
	}
	for (var v:int=0; v < startM-1; v++) {
		if (startY%4 == 3) {//閏年だったら
			startTotalD += mDArr4[v];
		} else {
			startTotalD += mDArrS[v];
		}
	}
	
	//日加算
	endTotalD += endD;
	startTotalD += startD;
	
	//日換算表示
	tf12.text = "(=" + String(endTotalD - startTotalD) + "日)";
}
last update 2009.7.1
参考・出典等
「特に無し」

▲page top

topmemogalleryblogtestaboutlinksmail
Copylight(C)2008-2009 Riptac. All Rights Reserved.