# 【キントーン】年齢自動計算　不具合

**URL:** <https://community.cybozu.dev/t/topic/5225>\
**Category:** kintone 開発相談\
**Created:** [2021 年 9 月 1 日午前 2:00 UTC](https://community.cybozu.dev/t/topic/5225 "2021-09-01T02:00:26Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account2833](https://avatars.discourse-cdn.com/v4/letter/l/a4c791/32.png) [@Legacy\_Account2833](https://community.cybozu.dev/u/Legacy_Account2833)\
**Post date:** [2021 年 9 月 1 日午前 2:00 UTC](https://community.cybozu.dev/t/topic/5225/1 "2021-09-01T02:00:26Z")

</div>

現在、和暦から西暦に変換をする為のコードと年齢を自動計算させる２つを組み合わせて利用しています。

和暦から西暦変換は正常に動作しますが、年齢自動計算が昭和44年（1969年）以降に設定すると正常にYMD1へピックアップされず、計算が出来ない不具合が発生していまいます。

改善策を見つけることが出来ていません。アドバイスを頂けると幸いです。

宜しくお願い致します。

&nbsp;

生年月日 日付 フィールドコード：誕生日

和暦から西暦変換コードはJavascriptで下記の様に組んでいます。

(function()&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;‘use&nbsp;strict’;

&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;tri&nbsp;=&nbsp;[

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;‘和暦’,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;‘和暦年’,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;‘和暦月’,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;‘和暦日’

&nbsp;&nbsp;&nbsp;&nbsp;];

&nbsp;&nbsp;&nbsp;&nbsp;kintone.events.on([‘app.record.create.show’,‘app.record.edit.show’]&nbsp;,(event)=\>&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;events&nbsp;=&nbsp;[];

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tri.forEach(target=\>{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;events.push(‘app.record.create.change.’+target);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;events.push(‘app.record.edit.change.’+target);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kintone.events.on(events,event=\>{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;record&nbsp;=&nbsp;event.record;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(record[‘和暦’].value&nbsp;&&&nbsp;record[‘和暦年’].value&nbsp;&&&nbsp;record[‘和暦月’].value&nbsp;&&&nbsp;record[‘和暦日’].value){

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;nen;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(record[‘和暦’].value&nbsp;===&nbsp;“大正”){

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nen&nbsp;=&nbsp;parseInt(record[‘和暦年’].value)&nbsp;+&nbsp;1911;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;if(record[‘和暦’].value&nbsp;===&nbsp;“昭和”){

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nen&nbsp;=&nbsp;parseInt(record[‘和暦年’].value)&nbsp;+&nbsp;1925;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;if(record[‘和暦’].value&nbsp;===&nbsp;“平成”){

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nen&nbsp;=&nbsp;parseInt(record[‘和暦年’].value)&nbsp;+&nbsp;1988;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nen&nbsp;=&nbsp;parseInt(record[‘和暦年’].value)&nbsp;+&nbsp;2018;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;record[‘誕生日’].value&nbsp;=&nbsp;nen&nbsp;+&nbsp;“-”&nbsp;+&nbsp;record[‘和暦月’].value&nbsp;+&nbsp;“-”&nbsp;+&nbsp;record[‘和暦日’].value;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;event;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;event;

&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;&nbsp;})();

&nbsp;

年齢自動計算は下記の様に連動させています。

&nbsp;

生年月日 ⇔ YMD1

更新日時 ⇔ YMD2

YMD1,YMD2 ⇒ 年齢

&nbsp;

計算式は以下の通りです。

【YMD1】

IF(誕生日\<0,0

DATE\_FORMAT(誕生日,“YYYYMMdd”,“system”)

)

【YMD2】

IF(更新日時\<0,0

DATE\_FORMAT(更新日時,“YYYYMMdd”,“system”)

)

【年齢】

ROUNDDOWN((YMD2-YMD1)/10000.0)

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2021 年 9 月 1 日午前 3:41 UTC](https://community.cybozu.dev/t/topic/5225/2 "2021-09-01T03:41:41Z")

</div>

N.Takayamaさん

お世話になっております。

\> 年齢自動計算が昭和44年（1969年）以降に設定すると正常にYMD1へピックアップされず  
こちら、1969年以前でしょうか？1969年以前ですと、YMD1が0となることを確認できました。

計算式のIF関数で「誕生日\<0」とありますが、1970年1月1日以前は負の数となるのかと思います。  
(おそらくUNIX時間の関係上)

誕生日の空チェックを「誕生日=“”」としてみてはいかがでしょうか？

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2833](https://avatars.discourse-cdn.com/v4/letter/l/a4c791/32.png) [@Legacy\_Account2833](https://community.cybozu.dev/u/Legacy_Account2833)\
**Post date:** [2021 年 9 月 1 日午前 7:11 UTC](https://community.cybozu.dev/t/topic/5225/3 "2021-09-01T07:11:58Z")

</div>

江田篤史さん

ご回答頂きましてありがとうございます。

申し訳ございません、1969年以前での不具合でございます。

IF(誕生日=“”  
DATE\_FORMAT(誕生日,“YYYYMMdd”,“system”)  
)

上記の計算式に訂正した際、「文法が正しくない」と表示がされてしまいました…

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1740](https://avatars.discourse-cdn.com/v4/letter/l/ed8c4c/32.png) [@Legacy\_Account1740](https://community.cybozu.dev/u/Legacy_Account1740)\
**Post date:** [2021 年 9 月 1 日午前 7:15 UTC](https://community.cybozu.dev/t/topic/5225/4 "2021-09-01T07:15:31Z")

</div>

N.Takayamaさん

お世話になっております。

IF関数の引数が足りないのかと思います。

```
IF(誕生日="",0,DATE_FORMAT(誕生日,"YYYYMMdd","system"))

```

で動作しないでしょうか？

---

<div class="post-metadata">

**Author:** ![Legacy\_Account2833](https://avatars.discourse-cdn.com/v4/letter/l/a4c791/32.png) [@Legacy\_Account2833](https://community.cybozu.dev/u/Legacy_Account2833)\
**Post date:** [2021 年 9 月 1 日午前 7:59 UTC](https://community.cybozu.dev/t/topic/5225/5 "2021-09-01T07:59:53Z")

</div>

江田篤史さん

ご教授頂きありがとうございます。

1969年以前も正常に動作させることが出来ました。

まだまだ勉強不足なので精進していきたいと思います。

この度はありがとうございました。
