intra-mart ® 7.2 patch09 Client Side JavaScript

im_date.js

概要

日付(時間)データ操作関数群。

サンプルコード

サンプル(.htmlファイル)
  ・
  ・
  ・
  <script src="csjs/im_date.js"></script>
  ・
  ・
    <!-- ボタンを押すと、2002年02年29日が日付として正しいかどうか判定します -->
    <input type="button" onClick="alert(isDateData(2002, 02, 02));">
  ・
  ・
  ・


Version: 1.0

Author: INTRAMART


メソッドの概要
static Boolean isDateData(<Number> nYear, <Number> nMonth, <Number> nDay, <Number> nHour, <Number> nMinutes, <Number> nSecond)
           日付として正しいかどうか判定します。
static Boolean isLeapYear(<Number> nYear)
           指定の年が閏年かどうか判定します。
static Object padZero( target , len )
          
static Date parseW3CDTFLocalized(<String> datestring)
           toW3CDTFLocalized 関数で変換したW3CDTF形式の文字列をDateオブジェクトに戻します。
static String toW3CDTFLocalized(<Date> date)
           引数に与えられたDateオブジェクトをW3CDTF形式の文字列に変換します。

/**
 * @fileoverview 日付(時間)データ操作関数群。<br/>
 * <br/>
 * <strong>サンプルコード</strong> </a><br/>
 * <br/>
 * <table border="1">
 *   <tr>
 *     <th>
 *       サンプル(.htmlファイル)
 *     </th>
 *   </tr>
 *   <tr>
 *     <td>
 *       <font size="-1">
<pre>
  ・
  ・
  ・
  &lt;script src=&quot;csjs/im_date.js&quot;&gt;&lt;/script&gt;
  ・
  ・
    &lt;!-- ボタンを押すと、2002年02年29日が日付として正しいかどうか判定します --&gt;
    &lt;input type=&quot;button&quot; onClick=&quot;alert(isDateData(2002, 02, 02));&quot;&gt;
  ・
  ・
  ・
</pre>
 *       </font>
 *     </td>
 *   </tr>
 * </table>
 *
 * @version 1.0
 * @since 3.1
 * @author INTRAMART
 */

/**
 * 日付として正しいかどうか判定します。<br/>
 * <br/>
 * 与えられた数値の組合わせが日付(および時間)を表す情報として正しいかどうかを判定します。<br/>
 * この関数は、閏年の判定も行っているので、2月29日に関しても正しく判定することができます。<br/>
 *
 * @param {Number} nYear 年
 * @param {Number} nMonth 月
 * @param {Number} nDay 日
 * @param {Number} nHour [option] 時間 (省略可能)
 * @param {Number} nMinutes [option] 分 (省略可能)
 * @param {Number} nSecond [option] 秒 (省略可能)
 * @return 指定の数値データが日付として正しい場合 true、そうでない場合false。
 * @type Boolean
 */
function isDateData(nYear, nMonth, nDay, nHour, nMinutes, nSecond){
	/* check the arguments(all value to integer) */
	nYear    = parseFloat(nYear);    if(isNaN(nYear))   { nYear    = 0; }
	nMonth   = parseFloat(nMonth);   if(isNaN(nMonth))  { nMonth   = 0; }
	nDay     = parseFloat(nDay);     if(isNaN(nDay))    { nDay     = 1; }
	nHour    = parseFloat(nHour);    if(isNaN(nHour))   { nHour    = 0; }
	nMinutes = parseFloat(nMinutes); if(isNaN(nMinutes)){ nMinutes = 0; }
	nSecond  = parseFloat(nSecond);  if(isNaN(nSecond)) { nSecond  = 0; }

	/* make the month's index */
	var nMonth_ID = parseFloat(nMonth) -1;
	/* make the target date variable */
	var dDate = new Date(nYear, nMonth_ID, nDay, nHour, nMinutes, nSecond);

	/* compareation date data */
	return ((dDate.getMonth() == nMonth_ID) && (dDate.getDate() == nDay) && (dDate.getHours() == nHour) && (dDate.getMinutes() == nMinutes) && (dDate.getSeconds() == nSecond));
}

/**
 * 指定の年が閏年かどうか判定します。<br/>
 * <br/>
 * 与えられた数値を西暦年として閏年計算をします。
 * 
 * @param {Number} nYear 年
 * @return 指定の年が閏年の場合 true、そうでない場合false。
 * @type Boolean
 */
function isLeapYear(nYear){
	return ((nYear % 4 == 0) && (nYear % 100 != 0)) || (nYear % 400 == 0)
}


/**
 * 引数に与えられたDateオブジェクトをW3CDTF形式の文字列に変換します。
 * 精度はミリ秒、タイムゾーンはクライアント環境のものを使用します。
 * @param {Date} date 日付型のオブジェクト
 * @type String 
 **/
function toW3CDTFLocalized(date){
    if(!date) return null;

    var str = date.getFullYear() 
            + "-" + padZero( (date.getMonth() + 1), 2)
            + "-" + padZero( date.getDate(), 2 )
            + "T" + padZero( date.getHours() , 2)
            + ":" + padZero( date.getMinutes() , 2)
            + ":" + padZero( date.getSeconds(), 2)
            + "," + padZero( date.getMilliseconds(),3);

    var offset = date.getTimezoneOffset();
    if( offset < 0 ){
        offset *= -1;
        str += "+" + padZero(Math.floor( offset/60 ),2) + ":" + padZero(offset % 60, 2);
    }else{
        str += "-" + padZero(Math.floor( offset/60 ),2) + ":" + padZero(offset % 60, 2);
    }

    return str;
}

function padZero( target , len ){
    for( var ret =target+""; ret.length < len; ret = "0" + ret );
    return ret;
}

/**
 * toW3CDTFLocalized 関数で変換したW3CDTF形式の文字列をDateオブジェクトに戻します。
 * 書式は yyyy-MM-ddThh:mm:ss.sTZD 形式に対応します。
 * 
 * @param {String} datestring 日付を表す文字列
 * @type Date 
 **/
function parseW3CDTFLocalized(datestring){
   
    var re = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})[,.](\d+)*([\+\-Z])((\d{2}):(\d{2})){0,1}/;
    var s = datestring.match(re);
    var datestr = s[1] +"/" +s[2] +"/" +s[3] +" " +s[4] +":" +s[5] +":" +s[6] +" GMT";
    newdate = Date.parse( datestr ) + parseInt(s[7],10);
    var k = +1;
    var tz = ( s[8] == "Z" ) ? "00:00" : ( s[10] + ":" + s[11] );
    var mp = ( s[8] == "-" ) ? -1 : 1;
    
    newdate -= k * Date.parse('1970/01/01 '+ tz +' GMT') * mp;
    return new Date(newdate);

}
/* End of File */

intra-mart ® 7.2 patch09 Client Side JavaScript

このドキュメントはJSDoc によって Mon Dec 15 17:12:34 2014に作成されました。