| ■No4782に返信(渡邊さんの記事)
これを扱うには諸々の前提が明示されていなければなりません。
まず「本日の年月日文字列]の年月日(開始時に自動生産「♯年月日」)を」とありますが、これは環境設定で随分異なります(日時型・時間型のタブ参照)。これを明記しないと、(a)西暦と(b)和暦のどちらを初期値として処理するのか等が、決められません。
[本日]項目について、「開始時に自動生産」とあるのは、恐らく項目属性の挿入初期値式を意味していると思います。項目計算式に設定してしまうと、置換等で再計算されてしまうので、それが妥当でしょう。
[年]の入力操作について、(c)[元号]項目が空ならば西暦と見なすやり方と、(d)[元号]項目以前に[年]の入力値が4桁ならば自動的に西暦と見なすようなやり方の両方が考えられます。どちらが使いやすいか、ですね。
[換算年]の項目計算式 (a+c)#条件選択([元号],#西暦年([元号]+#str([年])+"年"),1,[年]) (a+d)#条件選択([年]>1900,[年],1,#西暦年([元号]+#str([年])+"年")) (b+c)#条件選択([元号],[年],1,#元号年(#str([年]))) (b+d)#条件選択([年]>1900,#元号年(#str([年])),1,[年])
月について 2009年12月と2010年1月の差は、常識的には(e)「11」ではなく(f)「1」と考えると思うのですが、どうでしょう?
日についても 2009/6/21と2009/7/21の差を、常識的には(g)「0」ではなく(h)「30」と考えると思うのですが、どうでしょう?
そのためには、入力年月日を文字列として合体させておく必要があります。 [年月日str]の項目計算式 #str([換算年])+"年"+#str([月])+"月"+#str([日])+"日" ※もし和暦デフォルトなら、上記式の先頭に [元号]+ が付く。
[差年]の項目計算式 #小(60,#絶対値(#年数([本日],[年月日str])*10)) または #小(60,#絶対値(#年([本日])-[年])*10)
[差月]の項目計算式 (f)#小(30,#絶対値(#月数([本日],[年月日str])*5)) (e)#小(30,#絶対値(#月([本日])-[月])*5)
[差日]の項目計算式 (h)#小(15,#絶対値(#日数([本日],[年月日str]))) (g)#小(15,#絶対値(#日([本日])-[日]))
ps 渡邉さんは絶対差がお好きですね。私の脳内では「ABS渡邉さん」になっています。(^^;)
|