jsで日付の計算

  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>jsで日付の計算</title>
  6. <script type="text/javascript" src="jquery-1.5.1.min.js"></script>
  7. <script type="text/javascript" src="knockout-2.1.0beta.js"></script>
  8. <style type="text/css">
  9. table
  10. {
  11.   border-collapse:collapse;
  12.   margin-top:0.5em;
  13. }
  14. th
  15. {
  16.   background:#ffe0ff;
  17. }
  18. th, td
  19. {
  20.   text-align:left;
  21.   border:1px solid #ccc;
  22.   padding:3px 5px;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <h1>jsで日付の計算</h1>
  28. <p>
  29. 「<a href="//tips.recatnap.info/wiki/Js%E3%81%AE%E6%97%A5%E4%BB%98%E9%96%A2%E9%80%A3" target="_blank">Jsの日付関連</a>」のまとめ
  30. </p>
  31. <script type="text/javascript">
  32.   function addDate(ymdDate, target, add)
  33.   {
  34.     addNum = parseFloat(add);
  35.     yea = ymdDate.getFullYear();
  36.     mon = ymdDate.getMonth();
  37.     day = ymdDate.getDate();
  38.     if(target == "y")
  39.     {
  40.       yea += addNum;
  41.     }
  42.     else if(target == "m")
  43.     {
  44.       mon += addNum;
  45.     }
  46.     else if(target == "d")
  47.     {
  48.       day += addNum;
  49.     }
  50.     return new Date(yea, mon, day);
  51.   }
  52.   document.write( "<h2>Date()の引数を「2012年5月1日」にする</h2>" );
  53.   document.write( "<table>" );
  54.   document.write( "<tr><th>new Date(2012, 5, 1)の結果</th><td>" + new Date(2012, 5, 1) + "</td></tr>" );
  55.   document.write( "<tr><th>new Date(2012, 5-1, 1)の結果</th><td>" + new Date(2012, 5-1, 1) + "</td></tr>" );
  56.   document.write( "<tr><th>new Date(\"2012/05/01\")の結果</th><td>" + new Date("2012/05/01") + "</td></tr>" );
  57.   document.write( "</table>" );
  58.   
  59.   // ベースになる年月日にn年(or n月 or n日)を足す
  60.   target = "d"; // y、m、dのいずれか:年月日の増やしたい項目
  61.   addNum = 4;   // 増減値(target=yの時:年数、target=mの時:月数、target=dの時:日数)
  62.   baseY = 2012; // ベースになる年
  63.   baseM = 6;    // ベースになる月
  64.   baseD = 30;   // ベースになる日
  65.   rDate = addDate(new Date(baseY, baseM-1, baseD), target, addNum);
  66.   // 計算した年月日を分ける。
  67.   rDatY = rDate.getFullYear();
  68.   rDatM = rDate.getMonth() + 1;
  69.   rDatD = rDate.getDate();
  70.   rYMD  = rDatY + "/" + rDatM + "/" + rDatD;
  71.   document.write( "<h2>ベースになる年月日にn年(or n月 or n日)を足す</h2>" );
  72.   document.write( "<table>" );
  73.   document.write( "<tr><th>ベースになる日</th><td>" + baseY + "/"+ baseM + "/"+ baseD + "</td></tr>" );
  74.   document.write( "<tr><th>+4日したときの戻り値</th><td>" + rDate + "</td></tr>" );
  75.   document.write( "<tr><th>戻り値を年月日だけに整形したもの</th><td>" + rYMD + "</td></tr>" );
  76.   document.write( "</table>" );
  77.   // 期間
  78.   dayA = new Date();
  79.   dayB = new Date(baseY, baseM-1, baseD);
  80.   diffDay = Math.ceil(( dayB-dayA )/( 60*60*24*1000 ) );
  81.   document.write( "<h2>2つの日付の差</h2>" );
  82.   document.write( "<table>" );
  83.   document.write( "<tr><th>" + dayA + "から<br />" + dayB + "までの日数</th><td>" + diffDay + "日</td></tr>" );
  84.   document.write( "</table>" );
  85. </script>
  86. <div style="font-size:10pt;text-align:right;margin-top:0.5em;">
  87. <a href="//tips.recatnap.info/" target="_top">PCスキルの小技・忘却防止メモ</a> -
  88. <a href="//tips.recatnap.info/wiki/" target="_top">PCスキルの小技・忘却防止メモのまとめ(wiki)</a>
  89. </div>
  90. <div style="font-size:10pt;text-align:center;margin-top:0.5em;padding:0.5em;border-top:1px solid #ccc;">
  91. Copyright &copy; 2009 by PCスキルの小技・忘却防止メモ. All rights reserved.
  92. </div>
  93. </body>
  94. </html>