こんな感じにフィールドを配置して、和暦の誕生日や年月日諸々を入力、保存/編集時に満年齢が計算されると便利という事でさくっと作ってみました。
##フィールド定義
フィールド名 | フィールドコード | 型 |
---|---|---|
誕生日(年号) | 和暦誕生日年号 | ドロップダウン |
誕生日(年) | 和暦誕生年 | 数値型 |
誕生日(月) | 和暦誕生月 | 数値型 |
誕生日(日) | 和暦誕生日 | 数値型 |
満年齢 | 満年齢 | 数値型 |
##動作
- 和暦の誕生日に該当する項目[誕生日(年号),誕生日(年),誕生日(月),誕生日(日)]に値をセットし、保存を行うと項目[満年齢]に年齢がセットされる。
- 内部的には和暦の誕生日→西暦の誕生日に変換、西暦の誕生日から現時点での年齢を算出する。
##ソースコード
javascript
kintone.events.on(['app.record.create.submit','app.record.edit.submit'], function (event)
{
var western_calendar_year=0;
if ((event.record['和暦誕生日年号'].value == "平成") && (event.record['和暦誕生日年'].value > 0))
{
western_calendar_year = parseInt(event.record['和暦誕生日年'].value)+1988;
}
else if
((event.record['和暦誕生日年号'].value == "昭和") && (event.record['和暦誕生日年'].value > 0) && (event.record['和暦誕生日年'].value <= 64))
{
western_calendar_year = parseInt(event.record['和暦誕生日年'].value)+1925;
}
else if ((event.record['和暦誕生日年号'].value == "大正") && (event.record['和暦誕生日年'].value > 0) && (event.record['和暦誕生日年'].value <= 15))
{
western_calendar_year = parseInt(event.record['和暦誕生日年'].value)+1911;
}
else if ((event.record['和暦誕生日年号'].value == "明治") && (event.record['和暦誕生日年'].value > 0) && (event.record['和暦誕生日年'].value <= 45))
{
western_calendar_year = parseInt(event.record['和暦誕生日年'].value)+1867;
}
else
{
event.error ="不正な年号と年の組み合わせです。";
}
//西暦を算出→満年齢を計算
event.record['満年齢'].value = getYearMonth(western_calendar_year+"-"+event.record['和暦誕生日月'].value+"-"+event.record['和暦誕生日日'].value,'yy');
return event;
});
function getYearMonth(dtDate, typeDate) {
var dtToday = new Date();
var dtFrom = new Date(dtDate);
switch (typeDate) {
case 'yy':
var intDays = (dtToday - Date.parse(dtDate)) / 1000 / 60 / 60 / 24; // シリアル値の単位はミリ秒
return Math.floor(intDays / 365);
case 'yymm':
var intYear = dtToday.getFullYear() - dtFrom.getFullYear();
var intMonth = dtToday.getMonth() - dtFrom.getMonth();
if (intMonth < 0) {
intYear--;
intMonth += 12;
}
return intYear + "- " + intMonth;
default:
return null;
}
}
参考サイト