戻る

解答例

JavaScript

<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
</body>
<script type="text/javascript">
var str = "";

var d = new Date();  
var f = "Y/m/d";  
var date1 = comDateFormat(d, f);

str += "今日の年月日(YYYY/MM/DD形式)<br>";
str += date1 + "<br><br>";

var d = new Date();  
var f = "y/n/j"; 
date2 = comDateFormat(d, f);

str += "今日の年月日(YY/MM/DD形式)<br>";
str += date2 + "<br><br>";

//今月の日数 = 1か月先の0日目
date3 = new Date((new Date).getFullYear(), (new Date).getMonth()+1, 0).getDate();

str += "今月の日数<br>";
str += date3 + "<br><br>";

//元日から今日までの日数
var today = new Date();
var ganjitsu = new Date((new Date).getFullYear() + "/1/1");
var date4 = Math.round((today.getTime()-ganjitsu.getTime())/(24*60*60*1000));

str += "今月の1月1日からの通算日数は<br>";
str += date4 + "<br><br>";

//2006年9月1日に関する情報
str += "2006年9月1日に関する情報<br>";

date5 = new Date("2006/10/0").getDate();

str +=  "9月の末日は" + date5 + "<br>";

//2006年1月1日から9月1日の日数
var d1 = new Date("2006/9/1");
var d2 = new Date("2006/1/1");
var date6 = Math.round((d1.getTime()-d2.getTime())/(24*60*60*1000));

str +=  "2006年" + date6 + "日目<br>"


document.getElementsByTagName("body")[0].innerHTML = str;


/**************************************************
 * [機能]	日付オブジェクトから文字列に変換します
 * [引数]	date	対象の日付オブジェクト
 * 			format	フォーマット
 * [戻値]	フォーマット後の文字列
 **************************************************/
function comDateFormat(date, format){

	var result = format;

	var f;
	var rep;
	
	var yobi = new Array('日', '月', '火', '水', '木', '金', '土');
	
	f = 'Y';
	if ( result.indexOf(f) > -1 ) {
		rep = date.getFullYear();
		result = result.replace(/Y/, rep);
	}
	
	f = 'y';
	if ( result.indexOf(f) > -1 ) {
		rep = date.getYear();
		
		if(rep < 2000){
			rep += 1900;
		}
		rep = rep.toString().substr(2,2);
		result = result.replace(/y/, rep);
	}
	
	f = 'm';
	if ( result.indexOf(f) > -1 ) {
		rep = comPadZero(date.getMonth() + 1, 2);
		result = result.replace(/m/, rep);
	}
	
	f = 'n';
	if ( result.indexOf(f) > -1 ) {
		rep = date.getMonth()+1;
		result = result.replace(/n/, rep);
	}
	
	f = 'ddd';
	if ( result.indexOf(f) > -1 ) {
		rep = yobi[date.getDay()];
		result = result.replace(/ddd/, rep);
	}
	
	f = 'd';
	if ( result.indexOf(f) > -1 ) {
		rep = comPadZero(date.getDate(), 2);
		result = result.replace(/d/, rep);
	}
	
	f = 'j';
	if ( result.indexOf(f) > -1 ) {
		rep = date.getDate();
		result = result.replace(/j/, rep);
	}
	
	f = 'HH';
	if ( result.indexOf(f) > -1 ) {
		rep = comPadZero(date.getHours(), 2);
		result = result.replace(/HH/, rep);
	}

	f = 'mm';
	if ( result.indexOf(f) > -1 ) {
		rep = comPadZero(date.getMinutes(), 2);
		result = result.replace(/mm/, rep);
	}

	f = 'ss';
	if ( result.indexOf(f) > -1 ) {
		rep = comPadZero(date.getSeconds(), 2);
		result = result.replace(/ss/, rep);
	}

	f = 'fff';
	if ( result.indexOf(f) > -1 ) {
		rep = comPadZero(date.getMilliseconds(), 3);
		result = result.replace(/fff/, rep);
	}

	return result;

}

/**************************************************
 * [機能]	文字列から日付オブジェクトに変換します
 * [引数]	date	日付を表す文字列
 * 			format	フォーマット
 * [戻値]	変換後の日付オブジェクト
 **************************************************/
function comDateParse(date, format){

	var year = 1990;
	var month = 01;
	var day = 01;
	var hour = 00;
	var minute = 00;
	var second = 00;
	var millisecond = 000;

	var f;
	var idx;

	f = 'yyyy';
	idx = format.indexOf(f);
	if ( idx > -1 ) {
		year = date.substr(idx, f.length);
	}

	f = 'MM';
	idx = format.indexOf(f);
	if ( idx > -1 ) {
		month = parseInt(date.substr(idx, f.length), 10) - 1;
	}

	f = 'dd';
	idx = format.indexOf(f);
	if ( idx > -1 ) {
		day = date.substr(idx, f.length);
	}

	f = 'HH';
	idx = format.indexOf(f);
	if ( idx > -1 ) {
		hour = date.substr(idx, f.length);
	}

	f = 'mm';
	idx = format.indexOf(f);
	if ( idx > -1 ) {
		minute = date.substr(idx, f.length);
	}

	f = 'ss';
	idx = format.indexOf(f);
	if ( idx > -1 ) {
		second = date.substr(idx, f.length);
	}

	f = 'fff';
	idx = format.indexOf(f);
	if ( idx > -1 ) {
		millisecond = date.substr(idx, f.length);
	}

	var result = new Date(year, month, day, hour, minute, second, millisecond);

	return result;

}

/**************************************************
 * [機能]	ゼロパディングを行います
 * [引数]	value	対象の文字列
 * 			length	長さ
 * [戻値]	結果文字列
 **************************************************/
function comPadZero(value, length){
	return new Array(length - ('' + value).length + 1).join('0') + value;
}
</script>
</html>

PHP

<?php
header("Content-type: text/html; charset=utf-8");

date_default_timezone_set("Asia/Tokyo");

echo "今日の年月日(YYYY/MM/DD形式)<br>";
echo date("Y/m/d") . "<br><br>";

echo "今日の年月日(YY/MM/DD形式)<br>";
echo date("y/n/j") . "<br><br>";

echo "今月の日数<br>";
echo date("n") . "月の日数は" . date("t") . "<br><br>";

echo "今月の1月1日からの通算日数は<br>";
echo date("n月j日") . "は" . date("Y") . "年の" . date("z") . "日目<br><br>";

echo "2006年9月1日に関する情報<br>";
$timestamp  = mktime(0,0,0,9,1,2006);
echo date("n", $timestamp) . "月の末日は" . date("t", $timestamp) . "<br>";
echo date("Y", $timestamp) . "年" . date("z", $timestamp) . "日目<br>";


?>

inserted by FC2 system