2009年10月18日日曜日

和暦→西暦+曜日算出

よくよく考えてみると、
西暦に戻すと、月日は関係ないのかも。

ということで、一気に仕上げた。

曜日まで出すよ。


  1. $(function(){  
  2.     $('#convertButton').click(function(){  
  3.         var d = $('#date_text').val();  
  4.         $('#result').html(d.getSeireki('漢字'true));  
  5.     });  
  6. });  
  7.   
  8. var weeks = ["日","月","火","水","木","金","土"];  
  9.   
  10. String.prototype.getSeireki = function(pattern, day) {  
  11.     var ret = this.match(/[0-9]+/g);  
  12.     var wareki = '';  
  13.     var year = -1;  
  14.     var month = -1;  
  15.     var date = -1;  
  16.     if (ret.length == 1) {  
  17.         year = ret[0];  
  18.         wareki = this.substring(0,this.indexOf(ret[0]));  
  19.     } else if (ret.length == 2) {  
  20.         year = ret[0];  
  21.         wareki = this.substring(0,this.indexOf(ret[0]));  
  22.         month = ret[1];  
  23.     } else if (ret.length == 3) {  
  24.         year = ret[0];  
  25.         wareki = this.substring(0,this.indexOf(ret[0]));  
  26.         month = ret[1];  
  27.         date = ret[2];  
  28.     } else {  
  29.         return '';  
  30.     }  
  31.       
  32.     var result = '';  
  33.     if ("昭和" == wareki || "S" == wareki) {  
  34.         result = parseInt(year) + 1925;  
  35.     } else if ("平成" == wareki || "H" == wareki) {  
  36.         result = parseInt(year) + 1988;  
  37.     } else if ("大正" == wareki || "T" == wareki) {  
  38.         result = parseInt(year) + 1911;  
  39.     } else if ("明治" == wareki || "M" == wareki) {  
  40.         result = parseInt(year) + 1867;  
  41.     }  
  42.       
  43.     var divYear = '';  
  44.     var divMonth = '';  
  45.     var divDate = '';  
  46.     if (pattern == undefined || pattern == '漢字') {  
  47.         pattern = 1;  
  48.         divYear = '年';  
  49.         divMonth = '月';  
  50.         divDate = '日';  
  51.     } else if (pattern == '-') {  
  52.         pattern = 2;  
  53.         divYear = '-';  
  54.         divMonth = '-';  
  55.         divDate = '';  
  56.     } else if(pattern == '/') {  
  57.         pattern = 3;  
  58.         divYear = '/';  
  59.         divMonth = '/';  
  60.         divDate = '';  
  61.     } else {  
  62.         pattern = 3;  
  63.     }  
  64.       
  65.     if (ret.length == 1) {  
  66.         return result + divYear;  
  67.     } else if (ret.length == 2) {  
  68.         return result + divYear + month + divMonth;  
  69.     } else if (ret.length == 3) {  
  70.         var dispDay = '';  
  71.         if (day == true) {  
  72.             var strDate = result + '/' + (month) + '/' + date;  
  73.             var d = new Date(strDate);  
  74.             var youbi = weeks[d.getDay()];  
  75.             if (pattern == 1) {  
  76.                 dispDay = ' ' + youbi + '曜日';  
  77.             } else if (pattern == 2 || pattern == 3) {  
  78.                 dispDay = ' (' + youbi + ')';  
  79.             }  
  80.         }  
  81.         return result + divYear + month + divMonth + date + divDate + dispDay;  
  82.     }  
  83. }  

和暦→西暦

和暦→西暦変換について。

Stringオブジェクト(クラス?)を拡張して、
getSeirekiなるメソッドを作ってみた。

本当にこんな拡張でいいかは別にして。


最初と言うことで、
 和暦年 → 西暦年という変換だけど、

最終形は、
 和暦年月日 → 西暦年月日
ということだと思う。

たとえば、1989年1月8日は平成1年だけど、
1月7日だと昭和64年だということ。

今回のは、昭和56年 → 1981年という変換です。



  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2.   
  3. <html lang="ja">  
  4. <head>  
  5. <title> .:: Sample Play Keepaway ::. Ajax-02</title>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <meta http-equiv="cache-control" content="no-cache">  
  8. <meta name="Author" content="Sample">  
  9. <meta http-equiv="Content-Script-Type" content="text/javascript">  
  10. <link rel="stylesheet" href="css/blue/style.css" type="text/css" media="print, projection, screen" />  
  11. <link rel="stylesheet" href="css/default.css" type="text/css" />  
  12. <script language="Javascript" type="text/javascript" charset="UTF-8" src="js/lib/jquery-1.3.2.min.js"></script>  
  13. <script type="text/javascript">  
  14. $(function(){  
  15.     $('#convertButton').click(function(){  
  16.         var d = $('#date_text').val();  
  17.         $('#result').html(d.getSeireki());  
  18.     });  
  19. });  
  20.   
  21. String.prototype.getSeireki = function() {  
  22.     var ret = this.match(/[0-9]+/g);  
  23.     var wareki = this.substring(0,this.indexOf(ret[0]));  
  24.     var n = ret[0];  
  25.     var result = '';  
  26.     if ("昭和" == wareki || "S" == wareki) {  
  27.         result = parseInt(n) + 1925;  
  28.     } else if ("平成" == wareki || "H" == wareki) {  
  29.         result = parseInt(n) + 1988;  
  30.     } else if ("大正" == wareki || "T" == wareki) {  
  31.         result = parseInt(n) + 1911;  
  32.     } else if ("明治" == wareki || "M" == wareki) {  
  33.         result = parseInt(n) + 1867;  
  34.     }  
  35.       
  36.     return result + '年';  
  37. }  
  38. </script>  
  39. </head>  
  40. <body>  
  41.   
  42. <div class="preview">  
  43. <input type="text" style="width: 20em;" name="date" value="昭和56" id="date_text">  
  44. <input type="button" value="西暦変換" style="width: 180px; height: 30px;" id="convertButton">  
  45. <div id="result"></div>  
  46.   
  47. </div>  
  48.   
  49. </body>  
  50. </html>  

2009年10月15日木曜日

和暦

日本にいたら、一生?ついてまわる和暦。

西暦⇔和暦変換って、
JavaScriptでどうやろう。

とりあえず、

  • 明治が始まる日:1868/09/08

  • 大正が始まる日:1912/07/30

  • 昭和が始まる日:1926/12/25

  • 平成が始まる日:1989/01/08

  • そして...



出展:和暦西暦対応表

  → 旧暦とか使ってるから、SEっぽくないなぁ。。。

という数字を持っていなければならないかな。
で、元号が分かるとアップデート。


とりあえず、ここが参考になるので、
読みながら勉強しよう。