このように、「年齢」を自動計算で求めたいです。
①「フィールドに値を計算セットしたが画面上に反映されない件」を参考に
しておりますが、誕生日が2016/10/25の場合、本日2017/10/12で計算したら、年齢が1年0ヶ月になりますが、誕生日前だから、0年11ヶ月になるようにしたいですが、どうすればよろしいでしょうか?アドバイスいただきたいです。
(function () {
“use strict”;
// 基準日までの年月計算(経過年月数の計算)
function nen_set(dtDate, dtRefDate, typeDate) {
var dtToday = new Date(dtRefDate); //基準日
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;
}
}
//前ゼロの文字列を作成する関数
function zeroformat(v, n) {
var v1 = String(v).length;
if (n > v1) {
return (new Array((n - v1) + 1).join(0)) + v;
} else {
return v;
}
}
var flg = true;
//■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
kintone.events.on([‘app.record.edit.change.生年月日’,
‘app.record.create.change.生年月日’,
‘app.record.index.edit.change.生年月日’,
‘app.record.edit.change.基準日’,
‘app.record.create.change.基準日’,
‘app.record.index.edit.change.基準日’,
‘app.record.create.show’,
‘app.record.edit.show’], function (event) {
var record = event.record;
if (event.type === ‘app.record.create.show’ || event.type === ‘app.record.edit.show’) {
// フィールド制御
record[‘年齢’][‘disabled’] = true;
// 基準日に今日をセット
var dt = new Date();
var today = dt.getFullYear() + “-” + zeroformat((dt.getMonth() + 1), 2) + “-” + zeroformat(dt.getDate(), 2);
if (record[‘基準日’].value !== today) {
record[‘基準日’].value = today;
flg = false;
return tekitou(event);
}
} else if (flg) {
return tekitou(event);
} else {
flg = true;
}
return event;
});
function tekitou(event) {
var record = event.record;
var wkDate = record[‘生年月日’].value;
var wkReferenceDate = record[‘基準日’].value;
if ((wkDate === undefined) || (wkReferenceDate === undefined)) {
record[‘年齢’].value = “”;
return event;
}
var wkRetVal = nen_set(wkDate, wkReferenceDate, ‘yymm’); //「○年○ケ月」を求める
record[‘年齢’].value = wkRetVal;
return event;
}
})();