<?php
/*
	Copyright(c) 2010 Shift Tech Inc. All Rights Reserved.
 	http://www.shift-tech.jp/

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/**
 *  日付・時刻関連 関数リスト
 * @access	public
 * @author	emi konno 
 * @version CVS: $Id: DateTime.php 166 2007-07-17 10:13:29Z  $
 */

// （日付表示用共通変数）
$GLOBALS['date_element_options'] = array(
	'language'  => 'ja',
	'format'    => 'Y年 m月 d日',
	'minYear'   => Date('Y'),
	'maxYear'   => Date('Y') + 3
);

/**
 * 日時の配列形式をDBに保存できる形式に変換する
 * @access	public
 * @param	$datetime	Object 
 */

function format_datetime($datetime) {
	list($y,$m,$d) = _get_dateparam($datetime);
	list($h,$i) = _get_timeparam($datetime);

	return date('Y-m-d H:i:s',mktime($h,$i,0,$m,$d,$y));
}

/**
 * 開始日の配列形式をDBに保存できる形式に変換する
 * @access	public
 * @param	$date	Object 
 */

function format_startdate($date) {
	list($y,$m,$d) = _get_dateparam($date);

	// 開始時は0時0分0秒とする（基準時間が変わった場合は変更する）
	return date('Y-m-d H:i:s',mktime(0,0,0,$m,$d,$y));
}

/**
 * 終了日の配列形式をDBに保存できる形式に変換する
 * @access	public
 * @param	$date	Object 
 */

function format_enddate($date) {
	list($y,$m,$d) = _get_dateparam($date);

	// 終了時は23時59分59秒とする（基準時間が変わった場合は変更する）
	return date('Y-m-d H:i:s',mktime(23,59,59,$m,$d,$y));
}

/**
 * 誕生日の配列形式をDBに保存できる形式に変換する
 * @access	public
 * @param	$date	Object 
 */

function format_birthday($date) {
	list($y,$m,$d) = _get_dateparam($date);
	if($y!=null&&$m!=null&&$d!=null){
		return date('Y-m-d',mktime(0,0,0,$m,$d,$y));
	} else {
		return null;
	}
}

/**
 * DBに保存できる形式からtime型に変換する
 * @access	public
 * @param	$datetimestr	String 
 */
function gettimestamp_datetime($datetimestr) {
	list($y, $m, $d, $h, $i, $s) = sscanf($datetimestr, "%04d-%02d-%02d %02d:%02d:%02d");

	return mktime($h,$i,$s,$m,$d,$y);
}


/** 内部関数 **/

/**
 * 日付オブジェクトから日時を一括取得（内部関数）
 * （ひとまず'Ymd'フォーマットのみ対応）
 * @param	$date	Object	日付タグ
 */
function _get_dateparam($date) {
	$y = isset($date['Y']) ? $date['Y'] : '';
	$m = isset($date['m']) ? $date['m'] : '';
	$d = isset($date['d']) ? $date['d'] : '';

	return array($y, $m, $d);
}

/**
 * 時刻オブジェクトから時間を一括取得（内部関数）
 * （ひとまず'Hi'フォーマットのみ対応）
 *  * @param	$time		Object	
 * @param	$hassecond	bool	秒オブジェクトがある場合true（通常false）
 */
function _get_timeparam($time,$hassecond=false) {
	$h = isset($time['H']) ? $time['H'] : '00';
	$i = isset($time['i']) ? $time['i'] : '00';

	if ( $hassecond ) {
		$s = isset($time['s']) ? $time['s'] : '00';
		return array($h, $i, $s);
	} else {
		return array($h, $i);
	}
}		
?>